perm filename E.UPD[UP,DOC]30 blob sn#456385 filedate 1979-07-02 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00006 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	All information in this file is included in E.ALS[UP,DOC].
C00003 00003	1975
C00013 00004	1976
C00051 00005	1977
C00092 00006	1978
C00191 ENDMK
C⊗;
All information in this file is included in E.ALS[UP,DOC].

This file is merely a HISTORY of the changes to E.

Contained herein are past news items that have now been merged
into the E manual.  Everything mentioned in this file has been
documented in the E manual E.ALS[UP,DOC] (the "?"  file).

Page references in this file refer to pages in E.ALS[UP,DOC],
but these references are not guaranteed to be currently accurate.

1975

∂1975 -- UDP files are remembered on file switching (maybe almost right).

∂1975 -- Formerly fatal errors kludged around.
Some formerly fatal errors no longer cause E to HALT, although the
fix may not always work and E may crash later after all. 

∂6/75 -- The main timing problem on entering the line editor is fixed.
Now you can type ahead characters meant for the line editor without
waiting for the line editor to be set up after you have given a
command to edit a particular line.  The fix involved a system modification.

∂6/75 -- Unexpected errors encountered by E are now automatically recorded.
An FBI program reports most of the mal-functionings to ALS when you
get into trouble and you may hear from him for more details if he
thinks that he can do something for you (or vice versa).

∂6/75 -- /F and /F/R modes break long pages up by inserting FFs.
See p. 20.

∂7/75 -- Bug in formatting SOS files fixed.
A recent bug in formatting SOS files has been fixed. Users are still
advised to repage such files with the /F switch if this is a
reasonable thing to do. 

∂7/75 -- α<cr> restores previous line editor line when typing filename.
When you get the message "Try again" after specifying a file name
with some error, it is now possible to invoke the <control><cr> line
editor command to recall what you had typed so that you need not type
everything over again. Most of the time this does not work but it
does here. 

∂7/75 -- The α* and αβ* commands repeat the last search command given.
See p. 13.

∂7/75 -- The ⊗; and ⊗: commands move straight up and down inside line editor.
The commands ⊗; and ⊗: do the same thing as ⊗↑ and ⊗↓ respectively,
except that instead of positioning you at the end of the new line,
they position you at the display column where you were when you gave
the command.  Thus these commands move you (inside the line editor)
straight up and down, except that if the display column is in the
middle of a tab on the new line, then you are positioned at the
beginning of that tab and if the display column is beyond the end of
the newly edited line, you are positioned at the end of that line. 

∂8/75 -- After exiting from E, the monitor command CONTINUE restores E
at the same line and page from which the command to exit was given. 

∂8/75 -- Entering and leaving the line editor now does not set the
WRITE flag unless the line is actually changed.

∂8/75 -- Parenthesis finding/matching commands available. See p. 22.

∂9/75 -- The ⊗H (Home) and ⊗? commands now will take arguments. See p. 15.

∂9/75 -- Type ahead for line editor improved.

∂9/75 -- ⊗0⊗W and ⊗0⊗L now move half a window in the indicated direction.

∂9/75 -- Attempting to move the arrow off the screen usually caused the
window to be reset with the arrow in the middle of the window.

∂9/75 -- ⊗XLINCNT now reports the length of the current line and the
number of characters on the current page.

∂10/1/75 -- New partial-sign command ⊗∂<cmd>. See p. 24.

∂10/7/75 -- αV redraws the screen on Data Disc displays without erasing.
αβV still erases before redrawing.

∂10/7/75 -- ⊗XBURP command causes RIPPLING to discard any whole records
of nulls from the current page only.

∂10/7/75 -- Macro defining and calling commands (⊗XDEFINE and ⊗Y) save
the user from having to type the same sequence of commands several times.
See p. 25. 

∂10/9/75 -- Punctuation-at-end-of-line bug in XJUST command fixed.

∂10/16/75 -- Bug fixed in macro calls.

∂10/17/75 -- Un-copy-attach bug fixed. 
An attempt to detach more lines than are in the ATTACH buffer no longer
causes trouble. The current line cursor may not be left where you expect
it to be but E does not blow up.

∂10/28/75 -- E now permits lines containing up to 133 characters to be
transfered to the line editor for editing (the previous limit was 120).

Lines longer than these limits may be broken up by XJUST and XJFILL
commands.  Their lengths may be ascertained by the XLINCNT command.

∂11/11/75 -- Automatic directory updating for extended files.
If you edit with E a file that has been extended by some other
program, E will automatically update the directory.  However, the
updated directory will not be written out until some other page of
the file has been changed and is being written on the disk.  The
extended part of the file must be formatted correctly for E, which
simply means that any formfeeds found in that part of the file must
occur as the first character in a (200-word) record; otherwise, the
file must be reformatted and a new directory generated.  When a file
has been extended properly, E will say how many pages have been
added to the file, or if none, how many records have been added to
the last page.

∂11/13/75 -- XSPOOL and XXSPOOL commands, will now spool the ATTACH buffer.

∂11/20/75 -- E files extended by other programs.
E can handle easily almost any file that has been extended by
another program even though the directory has not been updated by
that program.  The single restriction is that the file must remain in
correct E format with Formfeeds occurring only as the first
character in a record.  MAIL and RCV extend files ok.  See p. 28.

∂11/20/75 -- The trailer line on the screen has been changed.  See p. 5.

∂12/5/75 -- When more than 8 files are referenced, by file switching
commands,  E  now gives the new file the referencing number that was
assigned to the longest-unreferenced file.  The user is warned of this
reassignment.

∂12/11/75 -- A new X command, XPROTECTION, is now available.
See p. 18 for details.

A warning is given when one enters a file that has the 400 protection
bit set (such files are not saved by DART).

∂12/12/75 -- New X commands: XMAIL, XSEND, XREMIND.  See p. 18.

∂12/14/75 -- XMARK now works in ATTACH mode.  See p. 18.

1976

∂1/16/76 -- Several new extended commands have been added
to allow TTY/Imlac users to execute commands that previously were
available only through certain characters not generally typeable on
TTYs; see p. 29.  The XMARK command and XINSERT and β<FORM> are now
illegal in /N mode; they always used to die horribly in /N mode
anyway (will be fixed eventually).  Bug in \ command fixed to clear
ESC I flag and clear search page number at top.  XEXIST and ∃
commands includes "R" for current file if open in Readonly mode (for
ttys).  /N included in filename displayed when in no-directory mode.
Various other improvements in tty/imlac service.  XTYPE command (old
command) now accepts search distance as amount to type out; mainly
useful in conjuction with new XMSG (XPARTIAL) commands:
XMSG<cr>XTYPE<cr> will type out current message in mail files, or
current page if no ∂'s.  Certain filehacks (eg, \GRIPES) can be
typed to E where filename is expected; allows easy abbreviation of
names of certain files on [2,2]--see p. 30.

∂2/4/76 -- New commands XLPAREN and XRPAREN.  See p. 22 for details.

∂2/13/76 -- Changes to commands FF, VT, L, T, B.  New commands ∧ and ∨.
All users are urged to refer to p. 7 for details of these changes which are
quite extensive and which make window moving much easier.

∂2/14/76 -- Searching from first character on line.  Null substitution.
The old E bug causing searches to ignore the first character of the
current line is fixed!  Also, the null substitution string bug has
been fixed completely now (we think).

∂3/19/76 -- The old limit of 511 characters on a line has been removed.

XBREAK will break lines (of any length) at specified column position.  See p. 12.

The XJOIN command has been modified to join lines without introducing
spaces for deleted CRLFs.  (It now undoes an XBREAK.)  See p. 12 for details.

Up to 23 marks in a file allowed (page and line numbers limited to 262142).

The repeat argument limit of 510 has been increased to 262142.

The ≤ and ≥ commands now take repeat numeric arguments.

The Z command (Imlacs only) now accepts a numeric arg which causes an
L command to be simulated with that (relative or absolute) arg first.

∂3/22/76 -- New switch /13E begins edit at end of page 13.
/E (no argument) begins edit at end of the file's last page.

An old bug has been fixed that caused characters to be lost from the middle
of a message file when rippling occurred if the file was bigger than 8K.

Any number of substitutions can now be done explicitly and E will
no longer stop and request confirmation after 100 have been done.

∂4/6/76 -- Several minor new features.
A page bloated by more than 18 records will automatically be burped
   when written out.
⊗#⊗V waits # seconds after displaying screen if # is positive; useful in macros.
Bug fix in macro expansion for αK and αS followed by activator.
⊗T and ⊗B made legal from line editor, but they will not move arrow
   in that case; that is, the arrow line will not glitch past edge of
   screen when these commands are given from the line editor.
⊗G and ⊗π commands removed (they have never been documented,
   so don't look for them).
Window position (as well as arrow line) maintained on exit followed by CONTINUE.

∂4/9/76 -- More minor changes/bug fixes.
After E has made you confirm a null substitution command, it no longer
   forces the first substitution to be done with the line editor.
⊗R command (replace attach buffer) no longer dies if you have switched
   files.  Gives error message instead.
⊗XRSYS ⊗XRUN ⊗XTV commands fixed not to spuriously set "command given
   from line editor" bit when swapping in new program.
⊗XBACKGO command modified to restore window position on page returning to.
α<space> in macros has been fixed (was broken when αK was fixed on 4/6/76).

∂4/11/76 -- Line redrawing bugs fixed.
For a long time (since last summer), E has failed to redraw (on DD) any
line which was entered into the line editor with a non-line-editor
command (commands other than αS α<space> α<tab> etc.) and which was
activated with altmode.  This bug has finally been fixed, and it is now
claimed that all line-redrawing bugs have been fixed.  If you see E fail
to correctly display one or more lines, please report to ME exactly what
you did to make it lose.  Thanks--ME.

Also fixed is the failure to redraw the attach buffer when ⊗-⊗C is given
with more than 8 lines attached.

∂4/22/76 -- Lots of bugs fixed, mostly in /N and multipage modes.

Approximately 20 bugs have been fixed, including at least 3 in /N mode
operation and at least 10 in multipage mode operation.  It is now
believed that both of these modes should be completely reliable!
Multipage mode involves having two or more consecutive pages in core at
the same time and is invoked by the commands β<FORM>, XINSERT, XAPPEND,
XDELETE and XMARK; all of these commands were formerly capable of causing
trouble, although the trouble in certain cases would not be noticed until
you tried to write out a page.  All of these should work in all cases
now, including multipage mode in a /N file.

Other new features:

The line and page numbers on the trailer line are now kept current with
respect to the arrow line, even in multipage mode.  The header line now
lists the range of pages in core in multipage mode, and the line number
that appears on the header line is relative to the beginning of the whole
range, not the arrow line's page.  The total number of pages displayed on
the trailer line in a non-formatted file (/R) is changed from "?" to the
actual number as soon as the actual number is known.  The record and
character counts usually displayed on the trailer line are suppressed
(replaced by ?R) when editing a non-formatted file (in /R mode).

The R command (Replace attach buffer) no longer leaves multipage mode if
the original page from which the attach buffer came is one of several
pages in core.

The new XALIAS command can be used to change your alias PPN.  It takes a
following text argument in exactly the same form as the system ALIAS
command: 1) PRJ to set project to PRJ and programmer to logged in name,
2) PRJ, to set project to PRJ and retain previous alias programmer name,
and 3) PRJ,PRG to set both project and programmer.  Note that the XALIGN
command forces at least ALIA to be used in the name of the XALIAS
command.  The XALIAS command types out your new ALIAS on both the current
piece of paper and PP 0 so that you will see your changed alias when you
exit.

Saying "N" to all three questions about formatting a non-formatted file
that you are trying to switch to no longers causes the attach buffer to
be spuriously discarded and the screen to be reset to the normal piece of
paper.

If you switch away from a /R file when you have made changes to the
current page, E still does not write out that page nor does it ask you
what mode you intended, BUT it does give a warning that the changed text
was not written out.

The new #XAUTOBURP command sets the threshold number of records of nulls
for autoburping to the number # specified.  A zero or negative arg
disables autoburping entirely.  An arg of just "+" sets the threshold to
its default value, which is currently 19.  If no arg is given, E will
simply type out the current threshold.  (A page to be written out that
has the threshold number of records of nulls, or more, will be
automatically burped to delete all records of nulls from that page.)

αD used in macros to delete a CRLF has been improved.  To work
completely, however, it must be preceded by a α<tab> (or αK<cr> or
αS<cr>) which is not separated from the αD by any character with control
bits.  E.g., α<tab>XYZαD and α<tab><bs>XαD will work properly, but
α<tab>α<bs>XαD will not do the right thing in certain cases.  Note that
it is only in macros that αD doesn't always work--plain typeahead still
works perfectly.  (The effect of bad uses of αD is that characters after
the αD in the macro definition up through the first activation character
following are not "typed" until the macro expansion ends, which can be
particularly noticeable if you use a repeat argument on the ⊗Y command.)

A warning message is generated at initialization time if the upper
segment is not write protected or if the upper segment checksum is not
correct.

∂4/23/76 -- Bug fix to attaching text in non formatted file.
Attaching text in a non-formatted file and then switching files and
putting down the attached text used to cause a "former WRITE CODE
ERROR" if the page in the non-formatted file did not end with a CRLF.
This bug has been fixed.

∂4/27/76 -- Filename scanner cleaned up.

Partially specified filenames are now parsed correctly.  This mainly
fixes the parsing of filenames like "FOO[1]", in which the programmer
name assumed is now always your alias programmer name.  Also, devices
(such as "UDP:") found in TMPCOR files are no longer sticky--you must
specify UDP: each time you want it.

∂4/27/76 -- Change to effect of αL and αP in multipage mode.
(Note that αβL and αβP are unchanged.  TTY users note that the effect you
now get with the L and P commands is that of αL and αP as described below.)

The αL command will go to the specified line on the current page, which
is defined as the page the line you are pointing to is on.  Thus if you
are on line 3 of page 4, then ⊗1⊗3αL will move the arrow down 10 lines
(to line 13), but not beyond the pagemark for page 5, whose line is
considered to be on page 4 like the row of asterisks at the end of the
last page in core.  The αβL command moves to the specified line within
ALL of the text in core, treating pagemark lines like normal lines; for
example, just αβL will always move to line 1 of the first page in core
whereas αL will always move to line 1 of the current page (defined by the
arrow).  If you have only one page in core, αL and αβL are identical.

The αP command will not flush the incore page(s) if the requested page
is already in core.  In this case, the arrow will simply move to line 1
of the specified page.  The αβP command always flushes the incore pages
and reads in exactly the one page requested.

∂4/30/76 -- αβI and αβ<cr> at beginning of line editor changed.
These commands no longer insert a blank line ahead of the new blank
line about to be edited in line insert mode.  This change only
affects the results of giving either of these commands from the line
editor when the cursor is at the beginning of the line.

Also, a bug has been fixed that previously prevented ending a find
command with a line editor command when the current line was either
blank, a pagemark, or the row of asterisks at the end of a page.

∂5/11/76 -- XSPOOL XXSPOOL XMAIL XSEND XREMIND now take numerical args.
These commands used to output as text either the whole attach buffer
or the whole page.  Now, however, a preceding numerical argument to
any of these commands specifies the number of lines to be output
(spooled or mailed).  If any text is currently attached, the output
will consist of the specified number of lines at the beginning of the
attach buffer; otherwise, the output will consist of the specified
number of lines (from the page) starting at the current line.  As
before, if no argument is given, the output is either the whole
attach buffer (if any) or the whole page.  The argument to these
commands can be specified by a search command (⊗F ⊗XFIND or ⊗∂) just
as can be done with the commands ⊗A (attach) ⊗C (copy) and certain
others.  For example, ⊗∂⊗XMAIL PRG<cr> will mail the current message
to PRG.

Note: a zero or negative argument to MAIL, SEND, or REMIND can be
used to send a one-line message entirely from the X-command line (no
text from page or attach buffer sent).  To do this, you MUST separate
the message text on the command line from the command itself with a
Formfeed.  For example, ⊗0⊗XSEND ME<ff>Hey, it really works!<cr> will
send ME the message "Hey, it really works!"  This technique can also
be used to include a subject line or initial text line ahead of the
message text being output from the page (or attach buffer).  That is,
⊗∂⊗XMAIL/SUBJECT PRG<ff>Sending mail from E<cr> will mail the current
message to PRG with the subject "Sending mail from E".

A bug has been fixed in macro expansions that involved typing the
line editor command αK or αS as the first character on a line.

The ⊗V command now redraws the screen immediately, whether typeahead
is present or not.

∂5/18/76 -- XSAVE command added--writes out page & attach buffer in E$SAVE.TXT.
This new command saves the current state of your incore page text,
including any attach buffer text, in the file E$SAVE.TXT on your LOGIN
disk area.  This is now done automatically for almost all fatal errors
detected by E; when it happens as a result of such an error, a message
to that effect is typed out.  (The file E$SAVE.TXT may NOT be written
out successfully if the error is detected again while writing this
file.)  Note that any previous E$SAVE.TXT file is superseded (replaced)
by the new file.  Note also that this command (and its automatic call
upon error detection) does NOT touch the file you currently have open
for editing.

A bug has been fixed that (rarely) caused rippling when unnecessary.

The maximum size of a macro definition has been doubled to 239 characters.

∂5/25/76 -- Leading tab on line means new paragraph during justification.
A bug has been fixed that caused lines beginning with a tab not to be
interpreted as the beginning of new paragraphs in justification.  Tabs were
correctly recognized previously only on the line the arrow pointed to.

∂5/27/76 -- New directory search command: ⊗F<string>⊗: finds labels.

This command will search the directory and go to the page for which the
<string> is found.  Then it will search that page for an occurrence of
<string> immediately followed by any of ":", "=", or "←".  Thus, labels
such as START: or definitions such as START=10 or START←10 can be
found easily if START occurs on the page's first (directory) line--use
the command: ⊗FSTART⊗: (as usual, αβF finds a delimited string; the ":"
will be detected correctly if it is the ending delimiter).

Also, both the ⊗F⊗P and ⊗F⊗: directory search commands has another form
to cause E to search only directory lines for pages following the
current incore page(s).  The form to get this effect is ⊗F<string>⊗+⊗P
or ⊗F<string>⊗+⊗: (that is, precede the ⊗P or ⊗: immediately with ⊗+).
This is useful when a string occurs on several directory lines.

∂6/1/76 -- Minor bugs/features fixed.

⊗∂αβD given on an empty incore page will now delete the page itself.
Formerly, this command was a no-op on a empty page.

An ET<cr> command which finds that the file named in TMPCOR is gone
(e.g., deleted) will no longer look for another file with different
extension.

The ⊗∂ command will not go beyond an incore pagemark.

αβD has been repaired to preserve the location of marks beyond the
line(s) that are being deleted.

The directory search commands (⊗F⊗P and ⊗F⊗:) now work correctly in
multipage mode.

∂6/3/76  --  <CR> at end of page no longer adds a line--use β<CR> or αβ<CR>.

This change allows <CR> to be used near the end of a page without the
risk of changing the page (setting the W flag) by accident.  To add a
blank line when you are at the end of a page, use β<CR>.  To add several
blank lines, use ⊗#αβ<CR> (which adds # blank lines).  To add text at
the end of the page, simply type over the row of stars as before; when
you activate that line with anything but <ALT>, its text will be on a
newly added line just like always.  To add lots of text at the end of a
page (or, for that matter, anywhere in a page), type αβ<CR> to enter
line insert mode.  MAIL your COMPLAINTS or COMPLIMENTS to ME.

Now, when you leave a READONLY file from a page which had been altered
(W flag on), you get the standard message:
	SORRY -- PAGE HAS BEEN ALTERED -- PLEASE REAFFIRM MODE.
You can then type either READONLY or READWRITE to determine whether the
altered page will be written out.  Formerly, changes to such a page
where simply ignored and you had no chance to write them out after you
had given the command to change files.

The ε and λ commands not preceded by a numeric argument now update the
display before reading the new filename unless a whole line (the new
filename) has been typed ahead.

An <ALT> response to any of the questions about formatting implies NO to
that question and suppresses any remaining questions, thus letting you
immediately enter a new filename without having to say NO three times.

∂6/26/76 -- ⊗XHEIGHT command

This new command, preceded by a numerical argument, sets the number
of lines of display to use for text.  This is especially useful on
IIIs to reduce flicker.  For example, ⊗2⊗0⊗XHEIGHT<cr> will cause E
to use 20 lines for displaying text.  Minimum size is 10 lines (since
attach buffer can use 8).  Maximum is terminal dependent.  ⊗XHEIGHT
without an argument will reset to normal size.

∂8/8/76 -- A potential bug occasionally resulting from deleting several
in-core pagemarks has been fixed.

∂8/20/76 -- DMs are now considered displays by E.

There are 17 lines for text in E on DMs.  There is no arrow for the
current line; only the position of the cursor under the first character
of the line indicates the "arrow" line.  Thus there is no easy way to
tell the difference between editing a line with the cursor under the
first character and not being inside the line.  Later, the DM line
editor will be displayed as bold, so it will be easy to tell when you
are inside a line.

Since there is no arrow, there is no double arrow for line insert mode,
and there is essentially no way to detect that you are in line insert
mode, except that when you type CR, a new line is inserted.  However,
this shouldn't cause any difficulty since the commands legal in line
insert mode are exactly the same as those legal in line edit mode.

Attached lines are indicated by displaying them as bold or blinking
(blinking if you haven't had your DM modified, bold if you have) instead
of preceding them with a vertical bar.  Attached blank lines are
slightly difficult to detect since a bold or blinking blank is still
blank.  In attach mode, the cursor is returned to the page printer at
the bottom of the page.

Whenever E has to redraw the whole screen on a DM, any display output
still going is flushed since it would be overwritten anyway.

When E doesn't have to redraw the whole screen, it is possible that it
might fail to leave the line editor correctly displayed if you have
typed ahead.  You can always correct the line editor display by typing
ESC R (i.e., NULL R).  If the screen text displayed is also screwed up
somehow, αV (i.e., EDIT V) will redraw the screen correctly.

∂8/20/76 -- Line editor no longer erased on DD/DM when activated while editing text.

Thus, the version of the line editor that appeared when you activated it
will be left on the screen.  This is convenient if, for instance, you
are doing multi-page searches from the line editor and want to look at
the final version of the line you edited while the search is running.
Note that if you typed ahead a lot and it had not all appeared yet when
you activated, then you may not actually see the final version of the line.

∂9/5/76 -- Major changes have been made to the JUSTification commands, and
7 new  commands have  been added.   The new  features greatly  extend  the
usefullness of  these  commands so  that  text  in unusual  forms  can  be
handled.  Many of the defects and  shortcomings of the older version  have
been corrected.  Report any bugs to ALS.

    The more  important changes  that  will affect  all users  are  listed
below.

1)  Left margins are now  specified as indents,  not as column  positions,
    that is, if one wishes  to specify that the line  is to start with  no
    indent one  types 0  not  1 as  formerly.   This makes  all  commmands
    consistent.  Right  margins are  still in  terms of  column  position.
    Specifications are now  always sticky and  the initial default  values
    are 4,0,74.

2)  It is now possible  to specify the  number of blank  lines to be  used
    between paragraphs.  The default condition is (as before) for there to
    be the same number of blank lines in the justified text as there  were
    in the original and this is signalled by a -1 as the fourth number  in
    the specifying  string (4,0,74,-1).   Existing specifications  can  be
    seen by typing a justifying command specifying 0 lines.

3)  Switches are now used to change the way that  E  detects the start  of
    a new paragraph.  The default  switch N (for Normal) approximates  the
    conditions formerly used.  Blank lines still signal a paragraph  break
    (as they do  for all  switches).  Instead of  requiring a  TAB as  the
    first character (when bank  lines are not used)  any indent ≥2 is  now
    taken as  a crown  line.  Other  switches allow   E  to  asertain  the
    existing indent conditions from  the text itself and  to use these,  A
    for arbitrary, conditions to signal new paragraphs.  (Try typing ⊗0⊗XJU
    to see how the switch setting is reported.)  Read p. 16  before trying
    to use any other switches.  People who like to use blank lines only as
    new-paragraph indicators and who want their text left with no indents
    can achieve this condition by typing A 0 as a following string after
    their first JUST command (separated fron the command name by a space).  

   (See p. 32 for a longer list of changes and  p. 16:18 for full details)

∂9/20/76 -- DM line moving hardware utilized.

On DMs, when lines on the screen simply need to be moved, the DM
insert/delete hardware for lines is used to avoid having to redraw any more
text than necessary.  This involves some attempt at optimization of which
lines get moved and which redrawn when lines on the screen need to be
moved across each other (which cannot be done).  Bugs to ME.

∂10/4/76 -- Improvement in use of DM hardware; "∞" accepted in switches.

You can now use "∞" (infinity-sign) as a value in a switch, e.g., /∞P.
It represents a very large positive number and cannot be negated.

On DMs, the line-moving hardware is now NOT used unless it results in
saving at least 10 output characters.

∂10/10/76 -- Three minor bugs fixed.

1)Fix to ⊗F⊗P to remember control-bits on ⊗F for subsequent ⊗* commands.
2)Test for line-too-long-for-line-editor made slightly more conservative.
3)Fix to not screw up when FF found in last word of record in /R file.

∂10/21/76 -- New /S switch; also /N switch no longer needs confirmation.

1)Formatting of /N files no longer needs to be confirmed by user.
2)New switch /S means edit new file at Same line & page as at in current file;
  for example, if you are at line 12 on page 15 if file FOO and say
  ⊗εBAZ/S<cr>, then the arrow will be positioned at line 12 on page 15 of BAZ.

∂11/15/76 -- New command ⊗XEXACT causes searches to distinguish case of letters.

The new extended command ⊗XEXACT causes any subsequent searches to
distinguish between upper and lower case letters.  Searches will succeed
only if the searched text contains the same cases of letters as given in
the search string.  The command ⊗-⊗XEXACT will disable this feature and
thus cause searches to ignore the case of letters.

Also, the default paragraph indent for the justification commands has been
changed back to its original value of zero (it had recently been 4).

1977

∂1/5/77 -- A bug in XBREAK has been fixed.  If an attempt is made to break
a line in the middle of a TAB the break precedes the TAB except for the
unusual case where the first character is a TAB and the BREAK value has been set
at less than 8.

∂1/8/77 -- Two new commands XTIN and XSIN have been added.  TIN puts
Tabs IN, in place of spaces when this will save space and when it is
allowable.  This may make it possible to save space on the disk, 
providing, of course, that the TIN command is followed by an XBURP
command.  SIN puts Spaces IN, in place of TABS.  See page 19 for details.
Either command may take an argument, with the default value being the entire
page or ATTACHment.

∂1/12/77 -- The substitute command now handles long lines and will not let
you substitute for a CR (found, for example, by the use of the "any
delimiter" symbol "|").

∂1/15/77 -- MARKS on deleted or attached lines are now moved to the first line
after the deletion or attachment. XCANCEL restores marks with the restored page,
of course, only if the marks had been previously saved by an αβ. command or by
switching pages.

∂1/17/77 -- Two very old bugs fixed:  one in free storage routines and one
in directory line maker (called when you change first line on page or edit
/R an unformatted file).  Also, ∃ command now always reports the index
number of the Home file.

∂1/21/77 -- Line MARKS now stay with the right lines during αβXAPPEND, β<FF>
and αβD (as applied to an in-core FF) operations.  They are still adversely
affected by XBREAK, XJOIN, XJUST and related commands.

∂2/5/77 -- Two new commands ⊗XNDFAIL and XNDSAIL generate and insert a new
first line (appropriate for the directory) in appropriate FAIL and SAIL
formats for labels and for specified categories.  No new line will be
generated if the page is empty.

These commands apply to the current page but if more than one page is in
core (through the use of XAPPEND or **<ff> commands) then the information
will be gathered from only that page in which the current line is located and
the information will appear as a new first line on this page. Note: this was
changed on 3/15/77.

	The XNDSAIL command may be used as an information source in a variety
of different ways.  It is not intended for use with text material.

XNDFail, given with a <cr> termination, lists all labels.
	Given with a α<cr> it lists only those labels that have one or more ↑'s
	Given with αβ<cr> it lists only those labels with ↑↑ (or more).

	This command does not take arguments (unlike XNDS).  If the command is
	typed with a prefix argument of 0, it states the conditions outlined
	above and is otherwise a NO-OP.

XNDSail, given with a <cr> termination, lists all words that are preceded by
	certain catagory words, the default words being RECORD!CLASS,
	RECORD_CLASS and PROCEDURE.

	Having found a catagory word the program lists the first word following
	the catagory word and then ignores any following text until either a comma
	or a semicolon is encountered.  When a semicolon is encountered the search
	for a new catagory word is resumed.  If, on the other hand, a comma is
	encountered (not however within parens) then the next word is taken as
	another example of the catagory and it is listed, preceded by a comma.
	Listings following different catagory words are saparated by spaces.

	One additional category may be specified by typing its name after a
		space following the command name and terminating it by a <cr>.
	Up to 4 new categories may be specified with the categories after
		the first one replacing the default categories, one by one.
		To retain some default categories the list is terminated by a <cr>
	If the typed list of categories is terminated by ⊗<cr> then only the
		typed categories are used, and the default ones are eliminated.
	If the command is terminated by ⊗<cr> without any typed category names
		then the original default categories are reinstated.
	If given with a prefix argument of 0 this command will accept any typed
		categories and then will list the categories that are in effect
		without generating a text line.

∂2/11/77 -- The system command ET? now gets the E manual E.ALS[UP,DOC] directly.
		
∂2/16/77 -- The method of loading E on an ET command has been changed.  The
 system no longer needs to find space for an upper segment which it would
 end up not needing, if some one else is already useing E.  Now only a lower
 segment is loaded, and code in this section checks to see if there is already
 an upper segment.  If there is, no new segment is loaded.

∂3/8/77 -- At the end of a line of text, the following line editor commands
no longer activate uselessly:  α<TAB>, αS, αK, αR, and META-<plain char>.

∂3/8/77 -- Reporting of FIND and related commands has been augmented to
show "(observing case)" or "(ignoring case)" depending on the state of the
EXACT switch.  The fact that the search was for a delimited string is now
indicated by the use of "|" instead of the usual "\" delimiters (which are
still used for an undelimited string search).

Furthermore, a zero argument to any of the Find or Substitute commands
(⊗0⊗F, ⊗0⊗XFIND, ⊗0⊗*, ⊗0⊗\) will simply cause the search and/or
substitute string for the given command to be typed out.  Note that ⊗0⊗F
thus does not take a following search string argument.

∂3/8/77 -- E can now be in any one of three possible reporting states.
The reporting state determines how much information E types out at various
times.  The three states are: the normal default state, a verbose state
achieved by the command ⊗XVERBOSE and a terse state achieved by the
command ⊗XTERSE.  The normal state can be restored by giving either
⊗-⊗XVERBOSE or ⊗-⊗XTERSE.  You can find out the current state by giving
either ⊗0⊗XVERBOSE or ⊗0⊗XTERSE.  The normal state now does somewhat less
reporting (that is, less typeout) than formerly, especially for the
parenthesis commands.  However, a new command ⊗XPINFO has been added to
give you the details of the last parenthesis command (or use ⊗XVERBOSE).

No error messages are ever suppressed by the terse state.

The following remarks are currently suppressed only in the Terse state.

	Only one MARK and you are there!
	There are no marks!
	Already marked!
	Not marked!
	All marks have been cleared.
	Removing last MARK on this page.
	MARKS on this page only have been cleared.
	Page is empty.  (XNDFAIL, XNDSAIL cmds)
	Aborting macro ... (error occurred in macro while in ⊗XSTOPONE mode)
	Abort of # macros requested from ... (⊗#⊗XABORT cmd given)

The following remarks are typed out only in the Verbose state.

	N characters added/removed (justify commands)
	Line now has N chars. (join)
	You have replaced XXX with YYY (substitute)
	(detailed reporting of the parenthesis commands--use new ⊗XPINFO)
	The new line of N chars lists M items (new directory line commands)
	Calling ... (calling a macro)
	Ending ... (a macro has finished)

Suggestions other informational remarks to suppress will be accepted.

∂3/15/77 -- Bunch of small fixes and a couple of new features.
 Left- and right-arrow cmds made to use search length arg.
 "I" displayed on header line while in line-insert mode (especially for DMs).
 Fix to prevent inputting of BS in a line of text.
 Multipage fix to NDFAIL and NDSAIL commands.
 Fix to updating of trailer line.
 Fix to XRUN and XRSYS cmds to use default extension of DMP to return RPG starts.
 Fix for ambiguous extended command given from line editor.

∂3/30/77 -- Preparations for expanded macro facility.

⊗XEMPTY and ⊗XNONEMPTY commands have been added to move to next empty or
non-empty line.  A repeat argument will cause these commands to look for
that many empty (or non-empty lines).  A negative arg will cause the
search to go backwards.  A positive arg (or default of 1) will ignore the
current line and search from the next line, but will not cross a
subsequent incore pagemark; hence the search is of only one page.  These
commands can also be used, both inside and outside macros, to tell if the
current line is empty--use a zero arg:  ⊗0⊗XEMPTY is a no-op if the
current line is empty, but will say something and stop any running macro
if the current line is non-empty; ⊗0⊗XNONEMPTY is a no-op if the current
line is non-empty, but will say something and stop any running macro if the
current line is empty.  The reason for these new commands is that soon it
will become legal for line editor commands to be used to get into the line
editor on empty lines, thus those commands will no longer stop macros on
empty lines.

 Also:

 E now enables wholine filestatus during rippling.
 Some multipage fixes to justify and TIN and SIN and TABLE commands are now in.
 CETV FOO←BAZ has been made equivalent to ETV FOO←BAZ.
 Line too long for line editor tells how long it is.

∂4/4/77 -- Several minor bugs fixed.
 Location to return to by XBACKGO command preserved over page deletion.
 Fix to CONTINUE after exit (and XCLOSE) to ensure file hasn't changed.
 Fix to CONTINUE after LOOKUP error.
 Fix to XBURP command and autoburping to make them work in all cases.
 Fix to avoid infinite loop when detached.

∂4/7/77 -- More preparation for multiple macros, plus some minor improvements.

 Line editor commands have been made legal when pointing to an empty
 line.  The important things to note are (1) that αD given when pointing
 to an empty line will delete the CRLF and leave you with the following
 line in the line editor, (2) that αI given when pointing to an empty
 line will enter line insert mode there, and (3) the commands αS and αK
 given when pointing to an empty line still take a following arg (to
 search or kill to) although such a search or kill on an empty line is a
 no-op.

 An "A" is now displayed on the header line when in attach mode.
 Display lines not used with a short page in core on a DM are correctly erased.

∂4/10/77 -- Change to ⊗XMARK command in attach mode at top of page.
 To facilitate moving pages around in files, the ⊗XMARK command given
 while in attach mode first puts down the attach buffer and then
 inserts the pagemark.  However, now if you are at the beginning of a
 page when you do this, the pagemark will be inserted beyond the
 put-down attach buffer, so that in this case, you will end up with
 the lines that were previously in the attach buffer now on a page by
 themselves.  Formerly, in this case you would have ended up with an
 empty page with the ex-attach-buffer text on the next page.

 A bug has been fixed which caused a line not to be redisplayed when
 altmode was typed from line insert mode on a DM.

∂4/28/77 -- One new command (!) and several small fixes.

The exclamation-point (!) command has been added to operate on paragraphs
in the same way that the partial-sign (∂) command operates on messages.

    NOTE: "PARAGRAPH" here means a contiguous group of non-empty
    lines plus certain surrounding empty lines (if any).
    Included in the paragraph of the ! command are: one empty
    line (if any) at the beginning of the paragraph and all but
    one of any empty lines at the end of the paragraph.  Thus
    within a group of continguous EMPTY lines, only the last
    line is really considered by the ! command to be non-empty.

The two commands ! and ∂ don't actually do anything until you type another
command.  If that following command accepts a search distance argument,
then the effective argument will be the number of lines in the current
paragraph (! command) or message (∂ command); for example, ⊗!⊗XJUST<cr>
will justify the current "paragraph".  If the command that follows ⊗! or
⊗∂ does NOT accept a search distance argument, then that command is
carried out after moving to the beginning of the next paragraph (!) or
message (∂).  The one case in which the ! and ∂ commands don't take a
following command is when a preceding zero argument has been supplied
(that is, ⊗0⊗! or ⊗0⊗∂), in which case the command immediately moves to
the beginning of the current paragraph (!) or message (∂).  Like the ∂
command, the ! command will delete the current pagemark if you attach or
delete all the text on the page with this command.

Other changes to E:

The <vt> character is now treated as an ordinary character by the various
justification type commands (XJUST, XJFILL, XTIN, etc).  This character
will display as an integral sign although it is typed out or listed as a
vertical tab (i.e., several linefeeds).

Two minor justification bugs have been fixed.  The arrow now always stays
where it should on XSIN commands, and two spaces are now always left after
punctuation ending a sentence during XJUST commands even if the
punctuation occurred at the end of a line in the original text.

PAS (PASCAL) has been added to list of standard filename extensions looked for.

ETV <FILE1>→<FILE2> now works again (provided <FILE1> has a directory).
This copies <FILE1> into <FILE2> and then edits <FILE1>.

Altmode typed in the middle of a line in line insert mode now saves the
text of that line.  Thus altmode given in line insert mode will now only
delete the current line if that line is completely empty.

∂5/6/77 -- Line marks now saved and restored via TMPCOR file; other minor fixes.

 A new switch of the form /a,bM places a mark on page a at line b.
 This is used in E's TMPCOR file to save and restore all line marks.

 Old bug fixed that caused wrong device to be kept open when file not found.
 Cleaned up αM command to avoid losing if page or line of mark doesn't exist.
 Line editor cmds made illegal once again if pointing to end of page (for macros).
 ⊗XBACKGO fixed for several cases where it used to return to the wrong right place.

∂5/9/77 -- Macro expansion fixed to know about new line editor commands.

 Also, ⊗XXSPOOL now uses the system default font.

∂6/2/77 -- Improved macro facilities with named, recursive macros.  See pp. 25-26.

 Also:

 RPG startup with zero filename causes E to read (and later write) TMPCOR file.
 Bug fix to ! and ∂ commands when given from inside line editor.
 Minor bug fix to NDFAIL,NDSAIL commands in case where previous dir line was empty.
 Exiting not allowed during macro expansion.
 Blank lines at end of page now considered part of prev paragraph by ⊗! command.
 Fixes to prevent spurious /N or /#F typed out when file not found.
 Fix to return home to right place when left home with multiple pages in core.

∂7/3/77 -- Greatly improved disk buffering (using caches) on input and output.

 Also:

 Added .MID (MIDAS) to list of desired extensions.
 Added .FNT and .CFT (fonts) to list of undesired extensions.
 Attaching/copying/releasing fixed for case where next line is a pagemark.
 Fix to avoid free storage error if indirect file ends with incomplete macro def.
 Fix to infinite repeat arg for macro calls; max repeat arg limited to 131064.

∂7/14/77 -- One new command, a slight mod to the ⊗! command, and a fix to ⊗XBREAK.

 ⊗XWRITTEN command added to find out when the current file was previously
   written and who did it (PPN and jobname).
 The ⊗! command now never deletes a pagemark (the ⊗∂ command still does).
 The ⊗XBREAK command now breaks properly lines in which a tab reaches
   exactly to the break limit.

∂7/27/77 -- Extended searches in unformatted files are much improved.

 Formerly, it was possible for an extended search in an unformatted file
 to fail to find an existing occurrence of the search string, or worse,
 for an ill mem ref to happen when it did find it.  Both of these bugs
 have been fixed.  However, note that extended searches in unformatted
 files still cannot go beyond the last page that you have looked at.
 The directory is used for finding where each page starts in an extended
 search, and the directory will only be complete out to the last page
 that you have actually gone to.  Thus, to make sure extended searches
 can go all the way to the end of the file, you should first move to the
 last page of the file (allowing E to generate the complete directory)
 with a command like ⊗∞⊗P.  This does not apply to any file that already
 has a valid directory, nor to any file being edited /N.

Also, a couple of other bugs fixed:

 Fix to prevent infinite loop when doing ⊗-⊗P from directory page in
 unformatted file.

 Minor fix to filehack parser.

∂8/3/77 -- Couple of rare bugs fixed.

 Fix to ⊗XAPPEND to disallow editing of pagemark from newly appended page.

 Fix to ⊗Q command to do nothing if previous line is a pagemark.

∂8/14/77 -- Minor fixes.

 Fix to make sure trailer values get updated when switching files.
 Doesn't say "Are you sure that ... will approve" if not overwriting old file.
 Slight fix to DM display routine to force redrawing line below line editor.
 Fix to avoid spurious retyping of last line on non-displays.

∂8/19/77 -- Improvements for non-display users; slight changes to old commands.

1. To allow substitution commands to be given from non-displays, E now
accepts a LINEFEED AT THE END OF A SEARCH STRING to indicate that a
SUBSTITUTION STRING IS COMING next.  Thus, the following commands are
equivalent (although the first is difficult or impossible to type on a
non-display):

	αFsearch stringα\substitute string<cr>
	αFsearch string<lf>substitute string<cr>

Similarly, the following multipage substitute commands are equivalent:

	αXFIND search stringα\substitute string<cr>
	αXFIND search string<lf>substitute string<cr>

2. A non-display user can now execute commands that require use of
particular combinations of the "bucky" bits CONTROL and META.  Two new
extended commands are used to specify what bucky bits are to be assumed
with the next command character.

	⊗XCONTROL<cr>	    causes the next character to have only
			    the bucky bit CONTROL.

	⊗XMETACONTROL<cr>   causes the next character to have both
			    bucky bits META and CONTROL.

If neither of these commands is used on a non-display, a command that
makes a distinction between CONTROL and META-CONTROL will execute the
CONTROL version; and a command that distinguishes between any bucky bits
and none at all will execute the no-bucky-bit version.

Here is an example of using the ⊗XMETACONTROL command to do a delimited
search (and a substitution); the command

	XMETA<cr>Fthis<lf>that<cr>

will find a delimited "this" and substitute "that".

3. To facilitate unambiguous abbreviation o→`the new ⊗XCONTROL command,
the old ⊗XCONTINUE command for resuming macro expansion has been renamed
to ⊗XRESUME.

4. Two new responses are now acceptable replies to the various Yes-or-No
questions about formatting that E asks when you try to edit a file that
doesn't have a directory.  You can say /R to have E edit the file in
Readonly mode, or you can say /N to have E edit the file in No-directory
mode.  NEITHER OF THESE TAKES A CARRIAGE-RETURN.  These new responses save
you the trouble of waiting for the appropriate question to come up.  They
are also useful if you accidentally answer the appropriate question with
a No.

5. ESC I will now interrupt any multiple substitution (even a one-page
type) after the next substitution.

∂8/20/77 -- New ⊗O command is just like ⊗XBACKGO<cr>--goes back to Old page.

 Also:

 ⊗XBACKGO command fixed to remember place to return to over ⊗XAPPEND command.
 Rare bug in file macros fixed (used to cause ill mem refs).

∂8/23/77 -- Bug in /R/F mode fixed.

∂9/5/77 -- Repeated macros can now be made faster; other minor new features.

 New command ⊗XCHECK enables checking of free storage (currently the default);
   ⊗-⊗XCHECK disables free storage checking; ⊗0⊗XCHECK reports the
   current condition of free storage checking.  Macros which are to be
   executed many times (e.g., 100 or more) will often be executed
   significantly faster if free storage checking has been disabled.  It
   is recommended, however, that free storage checking normally be left
   enabled (except when you are repeatedly executing a macro) because
   internal E errors are detected much faster that way, with less chance
   for clobberage of your file.

 Macro expansion fixed for use of αI not at end of line editor in macro.
 Filehack \GOLD added for GRIPES.OLD[2,2].  \G still gets GRIPES.TXT[2,2].
 ⊗XAPPEND command now gives error message if on dir page or in unformatted file.
 ⊗0⊗XEXACT now reports current condition of case-checking in searches.

∂9/25/77 -- New commands αN, αβN; modified commands αO, αβO; other minor changes.

 E now remembers the PREVIOUS TWO DIFFERENT PAGES that you have been on
 and the PREVIOUS TWO DIFFERENT LINES that you have been at on the current
 incore page(s).  Note: When you move 4 or less lines up or down, E does not
 consider you to have moved enough to warrant saving your old line.  Also,
 the saved locations of the previous two lines are not corrected for line
 insertions and deletions.

   To return to the Previous Page, use αO.
   To return to the Second Previous Page, use either αβO or ⊗2⊗O.

   To return to the Previous Line, use αN.
   To return to the Second Previous Line, use either αβN or ⊗2⊗N.

 The forms ⊗2⊗O and ⊗2⊗N are easier to use than αβO and αβN on NON-DISPLAYS.
 Also, someday E may remember more than two previous places, and the commands
 ⊗#⊗O and ⊗#⊗N will be used to get to the older places.

 The ⊗XBACKGO command is identical with ⊗O (i.e., it distinguishes
 between α and αβ).

Other new features:

 ⊗#αβK now kills # lines at the front of the attach buffer.

 The αβV cmd now erases the whole screen; ⊗V now also redraws page printer.

 CONTINuing (after exiting) now works even if the file has been changed by
 someone else after you exited!

 If E crashes without trying to write the crash file E$SAVE.TXT, the
 REENTER monitor command can be used to make E write the E$SAVE.TXT
 file (which will contain all of the incore text).

 If the file is write-protected from you, a warning is given when opening
 it in READWRITE mode and whenever you cause the "W" flag to be set.

 Any /F switch given on source filename (eg, A←B/F) applies to destination
 file instead.

∂9/29/77 -- ⊗P command from last page no longer causes page to be re-read.

 This command given on the last page still causes the incore page(s)
 to be written out, but it no longer 1) causes multiple pages to be
 lost from core, 2) moves you to the top of the page, nor 3) causes
 the screen to be redisplayed.

∂10/2/77 -- RPG startup of E now accepts device of edit file in AC 12.

 Formerly only files on device DSK: could be edited from RPG startups.
 See page 23.

∂11/17/77 -- Three minor bugs fixed.

 Bug fix to ⊗XEXECUTE of /N file to avoid losing first character of file.
 Bug fix to αβT and ⊗-⊗J commands given from line editor that wrapped around.
 Bug fix to ⊗#αβK command to avoid screwing up internal character count.

∂11/22/77 -- Certain filehacks now imply readonly mode.

The filehacks implying /R mode are:
    \DIGEST   \NOTICE  \DAY  \DOWN  \NAP  \NS  \PLAN  \PLN
Note that the default /R can be overridden by an explicit /-R.

∂12/7/77 -- READ command changed to BOOK.  READ now reads documentation files.

 The monitor command BOOK has replaced READ for reading a book and having
 E remember your place in the book with a .BKP file.

 The monitor command

	 READ <filename>

 searches the system documentation disk areas for the file specified and
 then edits in Readonly mode whatever file was found.  Thus you don't
 need to specify either the extension or the PPN of documentation files.
 If no extension is given, then files with extensions other than UPD
 will be found before UPD files.  However, any explicit extension,
 project, or PPN given will be observed.  If an extension is given but no
 PPN, E will look for the particular file on any of the documentation
 areas.  If a project is given, say PRJ, then E will look for the file
 on [PRJ,DOC].  If a programmer name is given, then no searching of
 documentation areas will be done and normal PPN scanning applies and
 the READ will merely force the file to be edited in Readonly mode.

 The switch /D (for Document) does the same thing as the READ command
 and is useful when giving a filename when switching files.

 Examples:
  READ UUO       ;Edits the UUO Manual file in Readonly mode.
  ⊗εMONCOM/D     ;Switches to the Monitor Command Manual in Readonly mode.
  READ UUO.UPD   ;Edits /R the update file for the UUO Manual.
  READ NOTICE/E  ;Edits /R the NEWS program's text file, starting at the End.

 Other new stuff:

 Verification of the need to reformat a file is suppressed in /F mode.
 The sense of the Yes/No question about keeping an old (invalid)
   directory has been inverted for consistency.  Say "Y" to flush the
   old directory text.
 A file with a "bad" extension (eg, .DMP) will now be edited if no file
   with a good extension exists when you give a file's name without an
   extension.
 The initial default PPN for ⊗XEXECUTE and ⊗XPUTDEFS is your logged in PPN.
 Macros defined during macro expansion are not typed out.  This
   particularly effects macros defined in an EXECUTE file.  A suggestion
   is that you put the command α0αXDEFINE⊗↔ at the end of your EINIT.CMD
   file to have the names of all defined macros typed out.

∂12/11/77 -- EREAD monitor command is like ETV but forces /R mode.

 Also:

 The ⊗XDEFINE command is now legal from line editor.

∂12/20/77 -- Greater-than sign as extension means largest numeric extension.

 For example, ET FOO.> will edit the FOO.* file whose extension is the
 largest numeric value.  E.g., if only FOO.20 and FOO.100 exist, then
 ET FOO.> will edit FOO.100.  If no file is found with a purely
 numeric extension, then ET FOO.> will say File Not Found: FOO.>.

1978

∂04 Jan 78 -- Minor additions and fixes.

 The /R switch in a BOOK command no longer disables the use of a
	.BKP file.  This change makes BOOK <file>/D work as well as
	BOOK <file>/R.
 The BOOK command positions the user on page 2 when starting a new
	book that has an E directory.
 E now correctly remembers your place when you exit from a file
	with multiple pages in core.
 The \FORWARD filehack has been added for editing MAIL's forwarding
	file in /R mode.  User's should not attempt to change that file.

∂19 Feb 78 -- ⊗N,⊗O,⊗H.  File interlocking.  Line numbers.  More.

⊗N,⊗O,⊗H commands for returning to previous lines, pages, or files:

 The commands ⊗N,⊗O,⊗H make use of three corresponding "stacks" of
 places you've been at recently: the LINE STACK (⊗N) of lines currently
 in core, the PAGE STACK (⊗O) of pages NOT currently in core, and the
 FILE STACK (⊗H).  Each of the ⊗N,⊗O,⊗H commands works with the
 corresponding stack; all of these commands interpret arguments in the
 same way and all distinguish between α<cmd> and αβ<cmd>.  You can
 return to the #th previous place, and/or you can "pop" # places off the
 stack, and/or you can "repush" # places back on the stack.  See p. 32
 for the complete explanation of these three commands and NOTE THAT
 αβH IS CHANGED FROM ITS PREVIOUS MEANING.

 Line insertions and deletions (including attachments) are now accounted
 for in the line stack, and the justify commands update both the line
 stack and line marks appropriately.  ⊗XCANCEL preserves the line stack
 but deletes entries in it for lines that no longer exist.  Note that
 ⊗XCANCEL still restores the line marks to their state when you last
 wrote out the page.

 When you return to a previous file (whether by number or by explicit
 filename), the top part of your page stack from that file is restored
 along with all line marks from that file.

 Multiple consecutive FF and VT (and ⊗W) commands do NOT remember (on the
 line stack) intermediate stopping places.  But ANY command besides FF,
 VT, ⊗W, and ⊗0⊗N will cause the current line to get remembered.  While
 you are FF/VTing around a page, the αN command will take you back where
 you started the current string of FF/VT commands (even if you are
 already there!) and will remember, of course, the line you are leaving.

 The directory search commands ⊗F<string>αβP and ⊗F<string>⊗: and the
 extended search command ⊗XFIND no longer spuriously remember the top
 line of the page they leave you on.  The paragraph and message movement
 commands ⊗!<cr> and ⊗∂<cr> no longer spuriously remember the first line
 of the paragraph or message (e.g., if you came from the middle).

 To get the old meaning of arguments to the ⊗H command (page number to
 return to), use the new ⊗XHOME command, which works like the old ⊗H
 command.

File interlocking:

 E now makes sure that someone else hasn't changed your file out from
 under you when you try to (1) CONTINUE after an ENTER failure (e.g.,
 when you try to write out a page while someone else is reading the
 file) or (2) change the protection of the file and fail because of a
 protection violation.  E also opens the file in Read-Alter mode
 before trying to ripple, in order to make sure no one else has the
 file open.  This should prevent all of the screwups that were
 formerly possible when two people simultaneously tried to edit the
 same file.

 There is a new command ⊗XOPEN which opens the current file in Read-
 Alter (RA) mode (⊗XOPEN is not legal in Readonly mode).  You should only
 use this command if you intend to make some change to the current file,
 since such opening of the file in RA mode will update the date/time
 written to the present.  THIS COMMAND IS NEVER NEEDED -- E will still
 open the file in RA mode automatically when you first try to write out a
 page -- but ⊗XOPEN is useful if you intend to make some changes to a
 file and you want to make sure that when you actually do write out a
 page, no one reading the file will cause you to get the ENTER FAILED
 message that leaves you talking to the monitor with only two
 alternatives:  CONTINUE to try again and REENTER to write out the incore
 text in your E$SAVE.TXT file.  Note, however, that the ⊗XOPEN command
 has no failure return -- if it can't open the file, this command itself
 generates the same ENTER FAILED message and the program stops and waits
 for you to type CONTINUE (or REENTER).

New command ⊗XNUMBERS:

 E now lets you select whether or not you want line numbers typed out.
 This mainly affects users on non-displays.  The command ⊗XNUMBERS
 enables typing out line numbers and the command ⊗-⊗XNUMBERS disables
 typing line numbers.  The current initial default is ⊗XNUMBERS.

Miscellaneous other features:

 Macro expansion is stopped (unconditionally) if a macro tries to stuff
   more text into the line editor than E has room for in its buffer.
   Note that E's buffer is considerably bigger than the line editor's,
   so it is still possible to lose some text (without stopping any macro)
   if a macro's line editor text is slightly too long for the line editor.
 When a file needs to be reformatted, E will not consider discarding the old
   directory's text unless that directory ends with a formfeed.
 Whenever the E$SAVE.TXT file is written, E's TMPCOR file is also written.
 The switch /l,pM is a no-op when switching to the ? file or to a file
   that you have already been in (results from restoring line marks for
   that file).
 A few other infrequent bugs have been fixed.

∂03 Mar 78 -- Several minor new bugs/misfeatures fixed (and one old one).

 Bug fixed in typing the name of the file being flushed from the filelist
   when the filelist is full.
 The input buffer is now cleared just before E exits to await the user
   typing CONTINUE to retry an ENTER (or LOOKUP or OPEN).
 Bug fixed to checking file for having changed when CONTINUEing after
   file busy when extending file from last page.
 Bug fixed in ⊗XPROTECTION NNN command to actually change protection
   (was no-op for last two weeks).
 Insert mode on non-display in -XNUMBERS mode gives prompt and starting
   line number but no subsequent line numbers.
 Fix to avoid wasted core (1K) at end of upper segment (old bug).

∂10 Mar 78 -- Tmpcor file now includes top three files in stack, plus page stacks.

 E now remembers in its tmpcor file the top three files of your file
  stack, plus the top part of the page stack of each file.  Thus these
  files will be restored to your file stack when you next give an ETV or
  EREAD monitor command, whether or not that command specifies a file to
  edit.  Line marks are remembered and restored for each of the three
  files remembered.  Remember that you can flush your file stack (should
  it get too cluttered) with the command ⊗0⊗∃, which makes E forget about
  all files but the one you are in.

 To allow specifying page stack entries in switches (e.g., in tmpcor
  files), a new switch has been added: /x,yO pushes the place of page x
  and line y onto the page stack.  This switch cannot, however, be used
  when editing (by explicit name) a file which E already knows about,
  since in that case E will restore the file's previous page stack.

 To allow multiple files to be specified (e.g., in tmpcor files), E has
  been made to accept multiple filenames (and switches), separated by
  commas.  Multiple filenames can be typed whenever E is accepting the
  name of a file to be edited (e.g., in the original monitor command or in
  the ⊗ε or ⊗λ filename line).  The first file listed will be edited and
  the rest will be pushed (in the order given) onto the file stack (this
  means that the second file listed will end up pushed most deeply in the
  stack and the last file listed will end up near the top of the stack.
  Note that if you are switching files (except by ⊗+⊗H or ⊗-⊗H), the file
  you are leaving will end up being pushed onto the stack AFTER the
  additional filenames you give in the filename line.

 Editing a previous file by explicit name (e.g., ETV FOO or ⊗εFOO<cr>) now
  positions you at the page and line where you left that file (unless you
  specify otherwise with switches, or unless that file has had some pages
  added and you haven't actually edited it with the current core image, in
  which case the default position is still the first added page).  Note
  also that line marks and the page stack for that file are restored even
  when switching by explicit name.  Thus switching by explicit name now
  restores everything that switching by any other mechanism restores,
  except for readonly status, which is implied by the ⊗ε or ⊗λ (but which
  can be overriden with /R).

 The new extended command ⊗XTHISPAGE is useful for going from multipage
  mode (two or more pages in core) to single page mode (one page in core).
  This command writes out the incore text and then reads in only the page
  where the arrow is.  The position of the arrow and (when possible) the
  window are preserved.  However, the line stack is currently cleared.

 The extension S1 has been added to E's good extension list, and the
  extensions LDI and RIM have been added to the bad list (file never
  edited unless extension given explicitly or unless only one file exists
  with the given primary name).

 Readonly mode is forced (and announced) on an attempt to edit any
  non-formatted file that is write-protected from you.  Formerly, you got
  the error halt "ENTER FAILED, PROTECTION VIOLATION" upon an attempt to
  edit such a file.

 A bug has been fixed which caused any appropriate /N to be left out of
  the tmpcor file and the header line whenever the filename extension was
  blank.

∂12 Mar 78 -- Improvements in new stuff.
	(See previous message first, if you haven't already read it).

Editing a file that has been extended (e.g., a message file) starts at the
  FIRST NEW PAGE if the file either (1) is named explicitly (with no
  page-specifying switch, e.g., ⊗ε∂<cr>), (2) is the first file edited in
  that core image (e.g., ET ∂<cr> or ET<cr>), or (3) has changed between
  exiting and CONTINUing.  Otherwise, an extended file will be edited
  starting at the page and line where you were when you left that file
  (that is, switching files by explicit number (e.g., ⊗2⊗λ) or with the ⊗H
  command will always return you to the page and line you were previously
  positioned at, even if the file has been extended before or since then).
Whenever the /nP switch is used to start editing at page n, the default
  line (if no line switch is given) is now always line 1.
Filenames read from tmpcor are assumed complete, even though they may
  contain no device name or PPN.
The ⊗XHOME command (old ⊗H cmd) now uses (the top of) the new file stack
  (for going to a relative or absolute page in home file).
The /-R switch now properly disables readonly mode even if ⊗λ was given.
The ⊗XTMPCOR command now forces subsequent exiting and file switching to
  write out the tmpcor file, making it appear you used a standard E
  monitor command (like ETV) to run E (instead of using, e.g., the monitor
  command R E, which normally suppresses writing out of the tmpcor file).

∂14 Mar 78 -- Improved line insert mode (affects display users only):

    IMPORTANT CHANGES to ⊗I, αβ<cr>, αβ↑, αβ↓, αβ. and new αβ<tab>.

It is now possible to get into line insert mode without having a new blank
line added.  To do this, type either αβI from the middle of the line
editor (that is, while editing a line) or ⊗I from the end of the line
editor.  These commands will turn on line insert mode and leave you
positioned wherever you are, but the next <cr> you type will create a new
line.  Note that, having used ⊗I thusly, if you then type <altmode> with
any text in the line, that text will be saved -- the altmode will not
restore any version of that line that existed before you edited it.  If
you don't want the final edited text you have, you can get back the text
as of the ⊗I command by clearing the line editor (e.g., type <clear>) and
then typing <altmode>.  This means that ⊗I from the line editor (not
including αI when interpreted as a line editor command) saves the current
text of the line (in core -- not on the disk) thus preventing you from
getting back (with altmode) a previous version of that line.

There has also been a small constructive change made to the αβ<cr> command
when given from the middle (not end) of the line editor.  This command now
breaks the current line in two, as before, but instead of inserting a
blank line between the two halves and leaving you there in line insert
mode, it merely leaves you at the end of the first part of the line in
line insert mode, without adding a new blank line.  This new effect should
be much more useful than the old version.

Note that these changes make αβI behave differently from αβ<cr> when in
the line editor.  The meanings of these two commands outside the line
editor are unchanged; in that case αβI and αβ<cr> do the same thing,
namely, put you into line insert mode on a new blank line.  Also, whenever
any numeric argument is given to either of these commands, the old meaning
is still in effect -- namely, to insert N blank lines (and not leave you
in line insert mode).

To make line insert mode on old text lines easier to get into, two old
commands and one new one have been made to enter line insert mode if both
α and β are on.  These commands are αβ<tab> and αβ↑ and αβ↓.  The latter
two still go to the end of the line above or below, but now also enter
line insert mode.  The αβ<tab> command is just like α<tab> (goes to the
end of the current line) except that it also enters line insert mode.
Notice again that if you type αβ<tab> while in the line editor, the line
editor text is saved at that point and a subsequent <altmode> has its
usual line-insert-mode meaning.

Another important (and related) new feature is the ability to write out
the page from the line editor with the αβ. command (must have both α and β
in order to work).  This command writes out (to the disk) the text that is
currently in the line editor (as well as the rest of the page) and then
leaves you in the line editor (in line insert mode if you were in it
before).  A subsequent <altmode> typed on that line will not restore the
original text of the line; if you are NOT in line insert mode, it will
restore the text that was written out, and if you ARE in line insert mode,
the <altmode> will have its usual line-insert-mode effect.  Note that
writing out the page from inside the line editor may cause E to Ripple the
file, even though you may not see any X (or W even) on the header line,
since the display is not updated before writing the page out.

Remember that in all cases, if you type <altmode> from a NON-EMPTY line
editor while in line insert mode, the line editor text is retained for
that line and you leave line insert mode.  If you type <altmode> from an
EMPTY line editor in line insert mode, you leave line insert mode with
either the saved text (if any) for that line restored (if you typed ⊗I or
⊗<cr> or αβ. in that line) or the (empty) line deleted.

∂15 Mar 78 -- Bug fixed; window restored on returning to a file.

Bug fixed to properly remember in tmpcor file the values of the /R switch
for all filenames written in tmpcor.

Also, the window position is now preserved and restored upon switching
files and returning.  Currently, the window positions for page stack
entries are not written out in the tmpcor file, except for the last page
and line you were at in the file.

∂17 Mar 78 -- Window position saved/restored with line stack.

E now remembers the window position of each line in the line stack.  When
you return to a line via ⊗N, the old window associated with that line is
restored unless the line was already on the screen, in which case the
window is not changed.

∂01 Apr 78 -- New ⊗XPOINTER cmd, justification simplifications,
    plus ⊗0⊗∃ and ⊗0αβM replaced, new commands to clear stacks, and more.

The new ⊗XPOINTER command is used to switch to a file whose name is
found in the text of the page you are editing, at or below the current
line.  With an argument of zero, the command ⊗0⊗XPOINTER will merely
move to the line containing the filename found (if any) and type out the
filename, but will not switch files.  The command with no argument moves
the arrow to the line containing the filename found (if any) before
attempting to switch files.

A filename in the text will not be recognized unless it is preceded by a
space (or tab) or occurs at the beginning of a line.  Furthermore, to be
accepted by this command, a filename must have at least one of these:
(1) an explicit (non-null) extension, (2) an explicit (complete) PPN,
(3) one or more switches, or (4) a valid filehack.  Spaces are permitted
only as leading spaces in PPNs for blank characters in the project or
programmer name, and a filename with its switches must occur all on one
line.  Thus the following filenames will be recognized:

FILE/-R, FILE.E, FILE[J,G], FILE.EXT[J,G](R9P7L), FILE.[ J, G], \GRIPES.

The following will NOT be accepted: FILE., FILE[X], FILE/6PR, F[ ABC,D].
The only characters permitted in names within the filename are letters
(case of letters is ignored), digits, and the underbar character (which
represents a quoted space).  In particular, the down-arrow construction,
the partial-sign name, and the question-mark name are not permitted in
filenames.  Also note that only the first filename on a line will ever
be detected.

Any switches following a filename in the text will be observed in
switching to that file.  In addition, any text in the extended command
line after the name of the command will be appended to the filename and
switches found in the text.  Thus additional (or overriding) switches
can be specified, or if no PPN or switches appear in the text, an
explicit PPN can be added.  Switches in the text must be perfectly
well-formed or the filename they are applied to will not be recognized.
This means that parentheses must be balanced and no letter or digit can
immediately follow the letter of a slash-type switch.  However, the
actual letters of switches are not checked for validity (as indeed they
never are by E -- undefined switches are completely ignored).

This command's default mode for switching to a file is readonly (/R).
However, this can be overriden with an explicit /-R occurring among the
switches in the text or typed in the command line after the extended
command name (e.g., ⊗XPOINTER /-R<cr>).

When you attempt to switch files with this command, if the file named in
the text cannot be edited because it does not exist, is busy, etc., E will
abort the fileswitching operation automatically (nevertheless having
written out the current page before attempting to switch files).  If,
however, the combined (text and command line) filename with switches has
an illegal syntax, E will say so and then load your line editor (on
displays) with the combined text so that you can correct it and try again.


CLEARING STACKS AND LINE MARKS:

The commands ⊗0⊗∃ and ⊗0αβM no longer clear the file stack and line mark
list.  These commands have been replaced with explicit extended commands.
Also, two new extended commands are provided for clearing the page and
line stacks.  These four new commands are:

    ⊗X ZFILES        ;Zero (clear) the file stack
    ⊗X ZPAGES        ;Zero (clear) the page stack
    ⊗X ZLINES        ;Zero (clear) the line stack
    ⊗X ZMARKS        ;Zero (clear) all line marks


JUSTIFICATION SIMPLIFICATION: REMOVAL OF SWITCHES (MODES)

The justification commands in E no longer accept the various switches
formerly used.  Now a simple procedure is used to determine where
paragraph breaks occur in the input text being justified.  For
justification purposes, a new paragraph is indicated by (1) an empty line
or (2) a line indented exactly the right amount (that is, a line having
the right number of leading blank columns, whether tabs or spaces or both
are used to make the indentation).

The amount of indentation that indicates a paragraph in the input text
will be called the DETECT-PARAGRAPH margin, or simply the DETECT margin.
Note: If you haven't set the detect margin explicitly (see below), and if
the crown margin and the left margin are the same, then only blank lines
will indicate new paragraphs in the input text (otherwise every line would
become a separate paragraph).

The detect margin is normally the same as the crown margin.  However, for
changing the crown margin of justified text that has no blank lines
between paragraphs, the detect margin can be set explicitly to any value.
The detect margin can be set in any justification command by typing its
value immediately after the extended command name and following it with a
slash ("/").  After the slash, the normal margins (crown, left, right,
blank) can be specified, separated by commas.  For instance, the command
⊗XJUST 8/7<cr> would set the detect margin to 8 (for paragraphs indented
with one tab or eight spaces) but would cause the text to be rejustified
so that each paragraph was indented only 7 spaces.  Note that the detect
margin is sticky until you change either the crown margin, the left
margin, or the detect margin itself.  Thus after the above command, E
would no longer recognize the new crown lines (now indented 7 spaces) as
such since the detect margin would still be 8.  The detect margin can be
set without changing any of the other margins, as in ⊗XJUST 7/<cr>.  The
command ⊗XJUST 8<cr> explicitly sets the crown margin to 8 and implicitly
also sets the detect margin to 8.

To find out the current margins and what indicates a paragraph, use an
argument of zero with a justification command, for example ⊗0⊗XJFILL<cr>.

This change affects the extended commands:
	JUST JFILL JGET SJUST SJFILL  TJUST TJFILL TJGET
Note that the last three of these use a separate set of margins (detect,
crown, left, etc.) from the rest.


EXTENSION TO FILEHACKS FOR SPECIFYING A PROGRAMMER NAME:

The filehacks \MAIL, \PLAN, and \NS can now have an explicit programmer
name specified, in which case the mail, plan, or notification file for the
named programmer is read instead of your own.  To specify a programmer
name, follow the filehack name immediately with a colon (:) followed by
the desired programmer name.  For instance, \MAIL:FOO represents FOO's
mail file, and \PLAN:BAZ is BAZ's plan file.  The new ⊗XPOINTER command
will recognize these programmer-name filehacks (as well as the normal
filehacks).  The filehack names themselves can be abbreviated as usual
(e.g., \M:FOO is FOO's mail file).  The programmer-name filehack facility
is designed for non-display users, since display users could already enter
a filename like ∂FOO or ∂BAZ.PLN.


MAILING FROM E WHEN THERE ARE NO JOB SLOTS:

When there are no job slots for E to start up a MAIL job, mail sent from E
is now queued (by writing it into a special file on RMD,SYS which will get
processed later automatically).  You are told when this is happening, and
you will eventually be notified of the success or failure of the mail
delivery.

Also, whenever the MAIL program detects an error in mail coming from E, it
will now mail the whole message and command back to the sender with an
appropriate message prefixed to it.


BUG FIXES:

Bug fix to ⊗XJOIN given on an empty line.
Bug fix for αβV typed from line editor.
⊗XREDFINE and ⊗XDEFINE called from inside a macro and ⊗XEXECUTE called at
  any time no longer change the current default macro called by the ⊗Y
  command.

∂06 Apr 78 -- ⊗-⊗XNUMBERS made default (no line numbers typed out).

Users who want line numbers typed out with the text must now enable them
by giving the ⊗XNUMBERS command, since the default is now to omit the
line numbers (by popular demand).

Also, the ⊗L command (move to specific line) is now permitted from the
line editor.  Note that to get this command to E, however, you must
either (1) type αβL rather than αL, which is a line editor command, or
(2) precede the ⊗L with a (signed or unsigned) argument.  And to enter
an unsigned argument from the line editor, the first digit must be typed
with both α and β (since α<digit> is taken as a line editor argument and
doesn't get to E).

∂09 Apr 78 -- Minor improvements to ⊗XPOINTER command.

The ⊗XPOINTER command no longer recognizes filenames in the text that are
less than four characters long (including their switches), except for
filehacks, which can be any length.  Thus "A.I" and "F/X" will not be taken
as filenames.

Also, a numeric argument can be given to the ⊗XPOINTER command to have it
find the nth filename in the text; thus it is now possible to switch to
any of several files all named on a given line.  An arg of the form ⊗#
will make E merely type out the #th filename, without moving the arrow and
without switching files.  An arg of the form ⊗+⊗# means switch to the #th
file named in the text; this is conveniently done right after the ⊗# form
has verified that the filename found was the one you wanted to switch to.
Since ⊗# doesn't normally move the arrow (so that you can then say ⊗+⊗#
without having changed the significance of the number), an arg of the form
⊗-⊗# finds the #th filename and moves the arrow to that line but doesn't
switch files.

Summary of meanings of ⊗XPOINTER args:

  arg	meaning

 (none)	Switch to first file named in the text at or below current line.
   ⊗0	Type out the first filename in the text, and move to its line.
  ⊗-⊗#	Type out the #th filename in the text, and move to its line.
   ⊗#	Type out the #th filename in the text (without moving).
  ⊗+⊗#	Switch to the #th file named in the text.

∂21 Apr 78 -- Minor fixes and new commands for getting info on non-displays.

 ETV<cr> edits the previous file at same place as before, even if the
   file has been extended.  ETV <filename><cr> will still position you
   at the first new page if the file has been extended.
 CETV command sets up the file stack from the tmpcor file.
 CETV<cr> is exactly like ETV<cr>; that is, it does NOT create a file,
   but edits the previously edited file.
 The ⊗XTRAILER and ⊗XHEADER commands type out the header and trailer lines,
   respectively.  These are useful on non-displays for getting some of the
   information that is not otherwise obtainable.
 The CRLF is suppressed on non-displays after ⊗∂ or ⊗! cmd and after OK.

∂25 Apr 78 -- Null filename during switching represents the file you just left.

 It is now possible to switch to the current file (for purposes of
   specifying different switch settings, like /∞F for burping the whole
   file) without having to type the actual filename.  If you omit the
   filename requested by the ⊗ε or ⊗λ command, but you do include one or
   more switches, then the file assumed will be the one you just left
   (upon the ⊗ε or ⊗λ cmd).  Thus the command ⊗ε/∞F<cr> will burp your
   whole file and ⊗ε/Q<cr> will format a /N file with an E directory.

 Also, the ⊗XPOINTER command will now recognize filenames that are preceded
   by a double quote (").  This allows REQUIREd filenames in SAIL and PUB
   to be spotted by this command (eg., REQUIRE "FOO.SAI" SOURCE_FILE).

∂15 May 78 -- αβ↑ and αβ↓ and line insert mode on blank lines.

 The commands αβ↑ and αβ↓ now put you into line insert mode even if
 the line you are taken to by the command is empty.  Formerly, when
 arriving at an empty line, these commands would NOT put you into the
 line editor at all, and therefore not put you into line insert mode.
 The commands α↑ α↓ ⊗; ⊗: still do not put you into the line editor
 if the line is empty.

∂23 May 78 -- Bug fixes to justification and TIN/SIN commands.

 Two bugs have been fixed in the justification and TIN/SIN commands.
   One bug affected positioning of the arrow after justification on the
   second (or later) of multiple incore pages; this bug also sometimes
   caused a fatal error to occur later, when the page was being written
   out.  The other bug was in attempts to TIN or SIN a null range
   resulting from the arrow being on the row of stars at the end of the
   incore text.  These were both old bugs.

 Also, ⊗XBEEPME is now legal from the line editor.

∂27 May 78 -- More bug fixes to justification.

 More justification bugs fixed for multipage mode.
 Flushed BEEPing of TTY32 on errors!!!

∂29 May 78 -- New switch /X for bloating a file, plus misc. other stuff.

 The new switch /#X causes E to reformat the file and bloat each page
  (except the directory) by # records of nulls (after discarding previous
  records of nulls (except on the directory page)).  This switch also
  disables auto burping.  Thus this switch is useful when you are about
  to perform a large amount of editing which might have otherwise caused
  rippling several times.  If the number # is omitted (i.e., "/X"), then
  the default bloat amount is used, which is currently 3 (records).  The
  bloat amount is limited to prevent the resulting file from becoming
  bigger than 256K; however, since this switch can still make a file very
  big, care should be taken to avoid wasting disk space unnecessarily.
  Note that you can unbloat (i.e., burp) a file with /∞F.

 New switch /#A sets auto burp threshold to #.  /-A disables auto burping.
  The effect of this switch is global; i.e., it applies to all files edited.
 TMPCOR file includes /-A (global for all files) if auto burping is disabled.
 The user is now beeped when the line editor fills up and activates.
 ⊗-⊗0<ff> is now just like ⊗0<vt>, and ⊗-⊗0<vt> is same as ⊗0<ff>.
 With an even screen size, the cmds ⊗0<ff>, ⊗0<vt> and ⊗0⊗W position the
  arrow just below the center, like ⊗0⊗∨ has always done.

∂31 May 78 -- Bug fixes to justification commands.

 Fixes to ⊗XTJUST and ⊗XTJFILL commands to make them work again.
 Fix to ⊗XJGET and ⊗XTJGET to do nothing if no text to examine and to
  use previous text if arg is negative.
 Bloating by /X is suppressed on the last page of a file and is limited
  to avoid making the file more than twice its previous size.

∂4 Jun 78 -- *** αβ! and αβ∂ will soon be different from α! and α∂ ***

*** COMING SOON TO AN E NEAR YOU: ***

Soon, the αβ versions of the ! and ∂ commands will have a slightly
 changed meaning.  The α versions of these commands will be unchanged,
 so users should NOW get used to using α! and α∂ for the old meanings.
 The new αβ versions, which are NOT UP YET, will pretend that the
 current line IS THE FIRST LINE OF A PARAGRAPH OR MESSAGE (depending on
 whether you used the ! or ∂ command).  This will be particularly useful
 when you want to justify, attach, type out, etc., the REST of the
 current paragraph or message.  It will also be useful for justifying,
 attaching, etc., the previous part of the paragraph or message.

Also, another justification bug has been fixed.

∂18 Jun 78 -- Header line displays "/-A" while autoburping is disabled.

∂22 Jun 78 -- New undeleting and Lisp-indenting and MODIFIED αβ! αβ∂ commands.

NEW COMMANDS FOR LISP USERS
 The α/ and αβ/ commands now parse Lisp S-expressions and indent lines
 accordingly (with tabs and spaces as needed).  Text is never moved from
 one line to another; only the indentation of each line is subject to
 change.  The ⊗#α/ command indents # lines (default is 1) starting at the
 current line.  Except in attach mode (see below), the ⊗#αβ/ does the same
 thing as ⊗#α/ but first moves down a line (keeping you in line insert mode
 if you are already in it).  Both α/ and αβ/ without an arg indent one line
 and leave you in the line editor positioned just after the indentation
 (αβ/ moves down a line first, of course).  When an explicit arg is given,
 neither command leaves you in the line editor.  All forms of ⊗/ can be
 given from within the line editor.  The indentation set up is determined
 by examining the S-expression which starts at or just before the current
 line, where the beginning of that S-expression is defined by the nearest
 left parenthesis occurring in the first column of a line (or by the
 beginning of the current page if no initial left parenthesis is found).
 In attach mode, the α/ command does not look for any context before the
 first line of the attach buffer, but the αβ/ command looks back into the
 normal page text just ahead of the attach buffer to allow you to indent
 the attach buffer while positioned at the proper place on the page.  A
 negative argument to either command means to indent the given number of
 lines before the current line (with or without moving down a line first,
 depending on whether the command has αβ or just α); in attach mode a
 negative argument makes the command a no-op.  The parsing of S-expressions
 is by MacLisp character set interpretation, but a command probably to be
 added soon will allow different character interpretations.  For more
 details, see GLS.

UNDELETING LINES
 Deleted lines are now saved (up to a certain limit) in the delete stack
 and can be undeleted with the ⊗XUNDELETE command.  Undeleted lines are
 inserted at the beginning of the attach buffer (even if no lines were
 previous attached).  The limit of deleted lines saved is indicated by a
 (settable) maximum number of deleted characters; this limit is initially
 5000 characters (approximately 1K of core).  However, this limit is
 allowed to be surpassed by a single command that itself deletes more than
 the current limit of deleted characters.  Thus the text deleting of any
 command (except ⊗XCANCEL, which doesn't save in the delete stack the text
 being cancelled) can be undone immediately, provided that no other
 command that deletes lines is executed first.  And, of course, even if
 another deleting command is executed, the earlier deleted lines can still
 be undeleted if the maximum character count for deleted lines is not
 exceeded.  Lines are undeleted in the opposite order from their deletion;
 that is, deleted lines go into a stack.  When the maximum deleted
 character count is caused to be exceeded by a newly deleted line, the
 oldest deleted lines (on the bottom of the stack) are flushed (forever)
 until the character count is brought back within the limit, but lines
 deleted by the current command are never flushed until another command
 deletes some lines.  When a line has been undeleted, it is no longer on
 the delete stack and can't be undeleted again (unless it is re-deleted).
 Now for what the various forms of the command do:

	⊗XUNDELETE      Undeletes (into the attach buffer) the last group
			of lines that was deleted by a single command,
			unless those lines have already been undeleted, in
			which case this command (with no argument) won't
			do anything (but complain).
	⊗#⊗XUNDELETE	Undeletes # lines (into the attach buffer).
	⊗0⊗XUNDELETE    Tells how many lines and characters can currently
			be undeleted, and it will also tell what the
			current deleted character limit is.
	⊗-⊗#⊗XUNDELETE  Sets the deleted character limit to # characters
			(note the negative argument).

MODIFIED αβ! AND αβ∂ COMMANDS!
 The αβ versions of the ! and ∂ commands now have a slightly changed
 meaning.  (The α versions of these commands are unchanged, so users
 should now always use α! and α∂ for the old meanings.)  The new αβ
 versions pretend that the current line IS THE FIRST LINE OF A PARAGRAPH
 OR MESSAGE (depending on whether you used the ! or ∂ command).  This is
 particularly useful when you want to justify, attach, type out, etc., the
 REST of the current paragraph or message.  Thus, with αβ the part of the
 current paragraph or message before the current line is considered to be
 in a different paragraph or message.  The ⊗-αβ! and ⊗-αβ∂ commands (note
 the negative argument) are useful for justifying, attaching, etc., the
 PREVIOUS part of the current paragraph or message.

MISCELLANEOUS

 The ⊗F<string>⊗P and ⊗F<string>⊗: commands point out by saying "(incore
 page)" when the resultant page turns out already to have been in core.
 This lets you know whether to use αN or αO to get back where you came
 from.

 The ⊗XCORCHK command has been added to make E try to core down if
 possible.  There may be certain situations where E doesn't automatically
 core down as much as possible immediately, but this command will force it
 to core down if appropriate.  Users NEVER REALLY NEED to use this command.

 A bug has been fixed that made file formatting rejected on a file switching
 command following a file formatting command of the form FILE1→FILE2.

 Another bug has been fixed that caused a duplication of the home file in
 the file stack when the αβ? command was aborted because the file was busy.

∂23 Jun 78 -- Bug involving blank lines fixed in ⊗/ commands.

 Also, the current line is not checked for the beginning of an S-expression
 (normally indicated by a left parenthesis in column 1) when an ⊗/ command
 is given without an argument (indents current line as appropriate to
 previously started S-expression, and leaves you in the line editor beyond
 the indentation).

 Also, a minor DM display bug has been fixed that occasionally caused the
 row of stars to be duplicated on the screen.

∂30 Jun 78 -- Minor fix plus new feature in ⊗/ command.  ⊗XLISPSYNTAX cmd.

 Bug fixed in ⊗/ with respect to vertical bars.

 The ⊗/ command now recognizes "super-brackets".  This makes ] in the text
 equivalent to enough )'s to close back to the matching [, or to close all
 hanging ('s if no hanging [ is present to match.

 The ⊗XTV command has been flushed since the TV editor is no longer available.

 The information typed by ⊗0⊗XINDENT and ⊗0⊗XALIGN is now more descriptive.

NEW COMMAND: ⊗XLISPSYNTAX

A new command ⊗XLISPSYNTAX has been implemented for examining and
modifying the syntax table which drives the ⊗/ (LISP indentation)
command.  This table has one entry for each of the 128. (200 octal)
characters.  Each entry consists of one or two characters which
describe a LISP character syntax category.  The second (or only)
character is a mnemonic for the role played in the syntax of LISP
S-expressions.  The first character of two is an auxiliary character
used for certain kinds of matching, e.g. of string quotes or super-
brackets.  The syntax types are:

  TYPE	NAME		AUX?	CHARACTERS WHICH INITIALLY HAVE THAT SYNTAX
   (	left paren	no	(
   )    right paren	no	)
   [    left super	no	[
   ]    right super	yes	]
   /    char quoter	no	/ %
   '    quote macro	no	` ' ,
   |    string quoter	yes	| "
   ↔    carriage return	no	CR
   ;    semicolon	yes	;
    	space		no	NULL TAB LF VT FORM SPACE BS
   A    letter		no	all others (e.g. A-Z a-z 0-9 + - * @ # α β ε ...)

(This initial arrangement represents a compromise between MacLISP and
InterLISP syntax.  In MacLISP, there are no superbrackets, and only /
(and not %) is a character quoter.  In InterLISP, only % (and not /)
is a character quoter; | does not serve as a string-like atom delimiter;
and semicolon is not a comment character.)

The auxiliary character is used for only a few special cases.
For a right superbracket, it is the character which is the matching
left superbracket.  (Thus one can have several independent pairs
of superbrackets, in principle.  This may not square with InterLISP
superbracket semantics, however.)  For a comment character, it is
the character which terminates the comment.  For a string quoter
it is the character which terminates the string (normally the same
one which begins it, but this extra flexibility is provided anyway).

The syntax table can be modified using the command:

	⊗XLISPSYNTAX<space><octal of char to be affected><space>
		<optional auxiliary char in octal, followed by space>
		<representative mnemonic syntax char><CR>

Examples: to make < and > be parentheses, one would do:
	⊗XLISPSYNTAX 74 (
	⊗XLISPSYNTAX 76 )
To make % not be a character quoter, but only a letter:
	⊗XLISPSYNTAX 45 A
To make ⊂ and ⊃ be superbrackets, one would say:
	⊗XLISPSYNTAX 20 [
	⊗XLISPSYNTAX 21 20 ]
The extra "20 " in the second one is needed to specify that ⊃ is
matched by ⊂.  However, the first command is also needed explicitly
to define ⊂ as a left superbracket.

The command
	⊗-⊗XLISPSYNTAX<CR>
resets all the interpretations to their initial default.

Finally, the command
	⊗XLISPSYNTAX<space><octal of char><CR>
will merely cause E to type out the current interpretation of the char
given in octal.

In Terse mode (see ⊗XTERSE command), the typeout resulting from the
⊗XLISPSYNTAX command is suppressed except in the last case shown (which
is an explicit request for this typeout).

∂7 Jul 78 -- Two bugs fixed in ⊗/ cmd.

 Bug fix to ⊗/ to adjust internal tabs correctly.
 Bug fix to ⊗/ to avoid infinite loop resulting from superbrackets.

 Also, autoburping suppressed if file is about to be deleted (eg, from ⊗∂αβD).

∂14 Jul 78 -- ⊗XSILENT command suppresses error messages inside macros; more.

 The ⊗XSILENT command suppresses error messages that are generated inside
 macros except when such an error would stop all macros.  Thus SILENT mode
 can be used to speed up execution (by suppressing the error typeout) in
 macros that deliberately cause errors to happen in order to abort one
 level of macro execution (in ⊗XSTOPONE mode).  The command ⊗-⊗XSILENT
 disables this mode.  The commands ⊗0⊗XSILENT, ⊗0⊗XVERBOSE, and ⊗0⊗XTERSE
 all type out the status of SILENT mode (when enabled) in addition to the
 status of the TERSE/NORMAL/VERBOSE mode.

 Answering the queston "Discard text of old directory?" no longer implies
 that you are willing to have the file reformatted.  If the file needs
 reformatting, then you will be asked about it separately.

 Filestatus is now displayed during all file copying (including formatting).

∂17 Jul 78 -- Accidentally required /N confirmation fixed.

∂18 Jul 78 -- Misc. minor improvements.

 The ⊗0αH command types stack level of each file listed; use a file's
   given number in the ⊗#αH command to get to that file.
 ⊗XTELLME and ⊗XTMPCOR are now permitted from line editor.
 ⊗∞ repeat arg no longer disallowed in null substitution specification.

∂24 Jul 78 -- Improved non-display line/page number typeout.

 When a pagemark (incore or not) gets deleted on a non-display, E now
 always types out the new page number, line number and line count for
 the new page.  Also, end-of-page lines include the line number to
 let you know how big the page is.

 Also, the extension .FAS (MacLisp binary file) has been added to E's list
 of bad extensions to avoid when no extension is typed by the user.  And
 the extension .LSP (Lisp) now has higher priority in the good extension
 list than it used to have.

 Finally, ⊗-⊗XCHECK and ⊗XCHECK (disabling and enabling of Free Storage
 checking) don't type out anything in Terse mode.  (⊗0⊗XCHECK still always
 tells you the status of Free Storage checking.)

∂12 Aug 78 -- Fixes to ⊗XSJFILL and ⊗XSJUST commands, plus more.

 ⊗XSJFILL and ⊗XSJUST commands fixed to indent paragraphs and insert blank
   lines properly.
 The extension .TEX has been added to E's list of good extensions to look for.
 CR, LF or ALT seen as switch char (eg, ⊗εFOO/<cr>) causes illegal file spec.
 Main spooling errors (no jobs for spooler) still cause file to be spooled.

∂14 Aug 78 -- \BBOARD filehack added.

∂18 Aug 78 -- ⊗#⊗XAUTOWRITE command added to save page after # insertions.

 E can now be made to automatically write out the incore text after a
 given number of lines have been inserted in line insert mode.  The
 default is NEVER to write out the text automatically, but the command
 ⊗#⊗XAUTOWRITE will set to # (if positive) the number of inserted lines
 after which E will automatically write out the page.  The autowriting
 will occur only upon a CR given in line insert mode, and then only every
 # lines; when autowriting occurs, a message to that effect is typed out
 and you are then left still in line insert mode.  Only lines created with
 line insert mode are included in the autowrite line counter, and the
 counter is reset to zero whenever the page is written out (by any means)
 and whenever you switch pages or ⊗XCANCEL.  The command ⊗-⊗XAUTOWRITE
 will disable autowriting (the default state), and the command ⊗XAUTOWRITE
 (without any arg, or with a zero arg) will report the current status and
 (if enabled) the threshold of the autowriter.

∂22 Aug 78 -- Commands to alter E's use of the display screen.

 The commands ⊗XTOPSET, ⊗XBOTSET, ⊗XATTSET and ⊗XHEIGHT can be used to
 alter E's use of the display screen.  These commands set, respectively,
 (1) the number of lines skipped above E's display (TOPSET), (2) the
 number of lines in the page printer at the bottom (BOTSET), (3) the
 maximum number of lines used to display the attach buffer (ATTSET), and
 (4) the number of lines used to display incore text (HEIGHT).  For the
 complete details, see p. 33 of this file.

 Also, the command ⊗0⊗M now reports how many line marks there are in the file.

Two minor display bugs have been fixed recently:

 One display bug formerly sometimes caused a just-edited line to appear
 twice, with one copy appearing where some other text should have.

 The other display bug sometimes caused the trailer line to appear in the
 page printer area at the bottom of the screen.

∂27 Aug 78 -- ⊗XBREAK and ⊗XJOIN fixed to preserve marks and line stack.

 Also, ⊗XBREAK and ⊗XJOIN now accept negative args to work on the
 given number of lines preceding the current line.

∂31 Aug 78 -- Minor fix to ⊗XBOTSET.

 Bug fixed in ⊗XBOTSET to avoid forgetting previous wholine already
 turned off by ⊗XTOPSET.

∂4 Sept 78 -- ⊗Xα<cr> to edit prev cmd; /-U switch to avoid updating file dir.

 ⊗Xα<cr> loads the line editor with the last ⊗X command line typed, to let
 you edit it and try again.  The α and β bits that you get on the edited
 command are precisely what you type on the X in ⊗Xα<cr>; also any numeric
 arg typed to the ⊗Xα<cr> is applied to the edited command.  This feature
 does not work on non-displays nor inside macros.

 E also now knows about the AAO privilege that is granted by the ACCESS
 program, so that E can continue to warn you about files that are write
 protected from you.


 E now has a /-U switch (and a ⊗-⊗XUPDATE command) that suppresses
 updating the directory whenever possible.  In particular, this switch is
 the DEFAULT when you are editing SOMEONE ELSE'S MESSAGE FILE (on 2,2 --
 this default does NOT apply to MSG.MSG files, but an explicit /-U will
 work on such files).  Thus if you go edit a message that you sent
 someone, your edit will not screw up his "place" in the file because E
 will retain the non-updated directory for him.

 The maintaining of the owner's "place" (last previously existing page) in
 the file works under virtually all conditions of editing a file in /-U
 mode, even if it ripples or if you burp it -- however, autoburping is
 never done while in /-U mode.  Although the /-U switch is not displayed
 to the user, its presence will be noted (on displays) when you write out
 a page -- the "U" flag on the header line will appear (or not disappear
 if it was already there) if the incore version of the directory didn't
 get completely written on the disk.

 One particular effect of /-U mode is that changing the first line of a
 page will not force the directory to be written out (although it will
 still cause the "D" to appear in the header, and when the page is written
 out a "U" will appear in place of the "D"); thus the directory can become
 inconsistent with the TEXT of the first line of each page (and if you
 leave such a file without doing an ⊗XUPDATE and come back to that file
 later, E won't know that the directory does not reflect the actual first
 line of each page).  However, the record numbers on the directory page
 are NOT allowed to become invalid or inconsistent.  As usual, the
 ⊗XUPDATE command will write out the directory (if necessary to update the
 disk version), and in addition, this command will take you out of /-U
 mode.

 The default /-U mode that occurs when editing another person's message
 file cannot be overriden with the /U switch; you must actually give the
 ⊗XUPDATE command to leave /-U mode, but YOU SHOULDN'T DO ⊗XUPDATE WHILE
 IN SOMEONE ELSE'S FILE.  (The /U switch has no use except to override an
 earlier /-U switch in the same command line!)

∂12 Sept 78 -- Two minor glitches fixed.

 ⊗XBOTSET has been fixed to avoid spurious erase of part of screen.

 Swapping to another program from E restores the wholine, if was turned off
 because of ⊗0⊗XTOPSET (or ⊗1⊗XTOPSET).

∂20 Sept 78 -- Integer-valued numeric macros with numeric operations and tests.

First some minor fixes:

 ⊗XNDFAIL ignores down-arrows in labels, lists symbols defined by ← or =,
   and doesn't allow spaces or tabs in the middle of a symbol.
 ⊗XUPDATE now never writes out directory unless necessary to update the
   disk version.  And if the incore text has been changed, ⊗XUPDATE writes
   it out when writing out the directory; this is necessary for consistency
   since writing out the directory may require rippling, which HAS to write
   out the current page.  Also, ⊗0⊗XUPDATE now simply reports the status
   of directory updating (/U or /-U mode).
 Bug fix to make ⊗O remember correct old pages after page deletion or insertion.
 "OK" always suppressed during macro execution.

And now for...

INTEGER-VALUED NUMERIC MACROS

 There are now numeric macros, whose integer values are represented by
 strings of digits (optionally preceded by + or - and optionally followed
 by non-digits).  There are several new commands to create, operate on,
 test, and apply numeric macros.  Numeric macros can be "executed" just
 like any other macros; the result is the typing of the simple string of
 digits into the text.  The CONTROL and META bits are ignored when
 evaluating a numeric macro and are left OFF when E generates a numeric
 macro.

 When a macro is being evaluated for its numeric value, an error will
 result if the macro definition doesn't start with a string of digits
 (optionally preceded by + or -); the evaluation is terminated by any
 non-digit (not including a leading + or -).  The maximum absolute value
 that can be generated without error during evaluation of a numeric macro
 is 2↑35 - 1.  Larger numeric values will give undefined results.  The
 largest possible absolute value of the repeat argument for any command is
 2↑17 - 8; larger repeat arguments will be limited to this maximum
 absolute value (with proper sign preserved).

 The only difference between numeric and non-numeric macros is that
 evaluating (as opposed to executing) a non-numeric macro will result in
 an error.

   ⊗XSET <macro>        Sets the named macro to the string of decimal
			digits (possibly preceded by + or -) that
			represents the command's numeric repeat argument.
			This command accepts a search distance as the
			repeat argument.
   ⊗XARGUMENT <macro>   Sets up a repeat argument for the following
			command from the named numeric macro.  Any arg
			given to the ⊗XARGUMENT command itself is added to
			the value from the macro before setting the
			resultant argument.  If the macro's definition
			starts with "+", the resultant argument will be
			relative, as if ⊗+ were typed.  The largest
			possible absolute value of the repeat argument is
			2↑17 - 8; larger repeat arguments will be limited
			to this maximum absolute value (with proper sign
			preserved).

 Of course, all the old commands that work on macros work just as well on
 numeric macros, but the following old commands deserve particular mention
 here since they are important in conjunction with the new commands for
 numeric macros.

   ⊗0⊗Z <macro>		Types macro's definition.
   ⊗Z <macro>		Executes the macro.
   ⊗-⊗XDEFINE <macro>	Undefines the macro.

 The following commands operate on the numeric value of a given macro.
 If the macro's old value started with "+", then the new value will start
 with "+" unless the new value is negative.  CONTROL and META bits are
 ignored in the macro's old value and are left OFF in the new value.  As
 usual, if no repeat argument is given, ⊗1 is assumed; thus ⊗XADD TOTAL<cr>
 adds 1 to TOTAL.  In the ⊗XDIVIDE and ⊗XREMAINDER commands, the remainder
 has the same sign as the dividend and the quotient is not rounded.

   ⊗XMULTIPLY <macro>	Multiply macro's numeric value by given repeat arg.
   ⊗XDIVIDE <macro>	Divide macro's numeric value by given repeat arg.
   ⊗XREMAINDER <macro>	Make macro's new value be the remainder from the old
			value divided by the given repeat arg.
   ⊗XADD <macro>	Add given repeat arg to the macro's value.
   ⊗XSUBTRACT <macro>	Subtract given repeat arg from the macro's value.
   ⊗XMAXIMUM <macro>	Set macro's value to MAX(<old value>,<repeat arg>).
   ⊗XMINIMUM <macro>	Set macro's value to MIN(<old value>,<repeat arg>).

 Each of the following "IF" commands compares the command's repeat
 argument against the value of a given numeric macro.  If the test proves
 true, nothing happens, but if the test fails, then an error will result
 (which can be used to terminate macro expansion).  As usual, if the
 repeat argument is omitted, ⊗1 is assumed.

   ⊗XIFLT <macro>	Error unless repeat arg < macro value
   ⊗XIFLE <macro>	Error unless repeat arg ≤ macro value
   ⊗XIFGE <macro>	Error unless repeat arg ≥ macro value
   ⊗XIFGT <macro>	Error unless repeat arg > macro value
   ⊗XIFEQ <macro>	Error unless repeat arg = macro value
   ⊗XIFNE <macro>	Error unless repeat arg ≠ macro value

∂22 Sept 78 -- αβS cmd re-edits last line.  Readonly internal E variables.

The new αβS command returns you to the last line you edited, if it is
still on the incore page at the place where you edited it.  This command
positions you at the column where you were when you left that line and can
be given from the line editor to take you back to a previously edited
line; thus it can be used to alternate between line editing of two
different incore lines.  Note also that this command is useful if you left
the line editor accidentally.  However, if you left the line editor with
<cr> or α<cr>, then this command will position you at the end of that
line, since it appears to E that that is where you typed the <cr> (the
system places such a <cr> at the end of the line).  Also, line edits that
you flushed with <altmode> cannot be gotten back into with αβS; only line
edits whose final text is accepted by E can be re-entered this way.  Any
altering (such as by substitution or justification) of the last line
edited prevents this command from getting back into that line.  The
position of the last line edited is updated for all line insertions and
deletions, but if you have since attached the last line edited, then this
command will succeed only if you have put that line back where it came
from (e.g., with αβR).  If you have deleted the last line edited, then you
cannot get into it with this command even if you have undeleted it and
placed it back where it came from.  On non-displays, this command goes
back to the last line typed in (inserted) but of course doesn't edit it.


READONLY INTERNAL E VARIABLES

There are now certain always-defined readonly variables whose values can
be accessed with most of the numeric macro handling commands.  These
variables include the current page number, the current line number, the
current column position, etc.  The complete list of variables is given
below (more can be added if necessary).

Here are the commands that accept either a readonly variable name or a
macro name.  See the individual command descriptions for what these
commands do with the value of the variable or macro.  Commands in the
second and third columns below (like ⊗XMULTIPLY) normally set (in addition
to using) a numeric macro value; when given a readonly variable name those
command merely type out the resultant value.

   ⊗XARGUMENT	   ⊗XMULTIPLY	   ⊗XADD	   ⊗XIFLT
   ⊗0⊗Z		   ⊗XDIVIDE	   ⊗XSUBTRACT	   ⊗XIFLE
		   ⊗XREMAINDER	   ⊗XMAXIMUM	   ⊗XIFGE
				   ⊗XMINIMUM	   ⊗XIFGT
						   ⊗XIFEQ
						   ⊗XIFNE

Here are the current readonly variables.  The names of readonly variables
CANNOT be abbreviated; and they all end with dot (.) to distinguish them
from macro names (which can occur wherever readonly variable names can).
For the purpose of these variables, the current character is the first
character on a line unless the command (from the above list) was given
from the line editor, in which case the current character is the one the
cursor was under when the command was given.  The variables below that are
marked with an asterisk (*) do not take into account any changes so far in
the current line if the variable is being evaluated from the line editor;
thus these variables return the value that would result if <altmode> were
typed immediately (this effect may or may not be changed).  The remaining
variables return the current accurate value even when given from the line
editor.

  READONLY
  VARIABLE   VALUE
  --------   ------
   LINE.     Number of the current line within the current page.
 * LINES.    Number of lines on the current page.
   PAGE.     Number of the current page.
   PAGES.    Number of pages in the file.
   COL.      Number of the current column, where 0 is the left margin.
   COLS.     Number of columns taken up by the current line.
   CHAR.     Number of the current character within the current line, where
	     0 is the first character in a line.  There is a difference
	     between CHAR. and COL. if and only if there are tabs ahead of
	     the cursor in the current line.
   CHARS.    Number of characters in the current line, not counting the
	     CRLF at the end of the line.  This value will be 0 if the
	     current line is empty and -2 if the current "line" is the end
	     of a page.
   CORLIN.   Number of the current line among all incore text.
 * CORLNS.   Number of lines of incore text (including incore pagemarks).
 * CORCHS.   Number of characters of space taken up by the incore text, not
	     counting nulls at the end of the final incore page.
 * ROOM.     Number of additional characters there is room for among the
	     incore text before expanding ("X") the page(s) is needed.  The
	     sum of CORCHS. and ROOM. is the amount of disk space, in
	     characters, currently allocated to the incore text.
   CORBEG.   Number of the first incore page.
   COREND.   Number of the last incore page.
   ASCII.    Ascii character code for the current character.  This will be
	     13 (decimal code for <cr>) if the current line is empty or if
	     the cursor is positioned at the end of the line.  This value
	     will be 12 (decimal code for <ff>) if the current "line" is
	     the end of a page.
   SIXBIT.   Sixbit character code for the current character.  This is made
	     from the ascii value by subtracting 64 (decimal) from ascii
	     character codes from 96 to 127 (decimal, inclusive) or 32
	     (decimal) from ascii character codes from 0 to 95 (decimal,
	     inclusive).  Thus, the characters with ascii codes 0 through
	     31 (decimal) have negative sixbit codes.
   TOPSIZ.   Number of screen lines not used at top of screen (normally 2,
	     to allow for wholine).
   BOTSIZ.   Number of screen lines used at bottom of screen for typeout
	     and echoing (in the page printer).
   WINSIZ.   Number of screen lines used to display text (does not include
	     lines used for the header and trailer).
   ATTSIZ.   Number of lines currently attached.
   ATTMAX.   Maximum number of attached lines that will be displayed.

∂26 Sept 78 -- ⊗-⊗XECHO turns off echoing of text from line editor.

⊗-⊗XECHO turns off the echoing of text edited in the line editor (displays
only).  In this mode, however, the activator of such edited text is typed
out so that you can tell what it is (although this typeout will occur late
since it is done by E, not the system).  The command ⊗XECHO restores the
normal mode in which all input is echoed (except for that generated during
macro expansion).  ⊗0⊗XECHO reports the state of echoing.

Bug fix to ⊗XARGUMENT when getting readonly values from line editor.

∂27 Sept 78 -- New ⊗XCASE command calls Nth macro named in command line.

The following command can be used to select and call one macro from a
list.  In this case the repeat argument to the command determines which of
several possible macros is to be called.  This command is normally used
inside a macro that might want to call some other macro(s).

	⊗#⊗XCASE <macro name> <macro name> ... <macro name><cr>

This command executes the #th macro in the list of macro names, where the
counting of # starts at zero (0); the selected macro is executed with a
repeat arg of 1.  For instance, ⊗2⊗XCASE A B C D<cr> will execute macro C.
The macro names should be separated with spaces.  No macro name in the
middle can be omitted, and the null (blank) macro name cannot be used
here; however, any non-blank names can be supplied, since E does not check
that all such names represent currently defined macros.  If the repeat arg
given to ⊗XCASE is negative, then the command will be aborted.  Since the
extended command line is buffered in E, and since the buffer has a fixed
size, there is an effective limit to the number of macro names that can be
listed in the command line; the current maximum command line length is
about 119 characters -- characters beyond that are ignored.  An error will
occur if there are not enough macro names in the command for the given
repeat arg.


Because of the new ⊗XCASE command, the old ⊗XCANCEL command can no longer
be abbreviated ⊗XCA<cr>.

Also:

 Bug fix to ⊗XREDEFINE when macro text from page starts with a tab.
 Macro pushdown list size has been increased from 24 to 48 (decimal).
 Macro pushdown overflow stops all macros but now preserves stack for ⊗XRESUME.
 ⊗-⊗#⊗XUNDELETE info message suppressed in terse mode.
 Bug fix to restore autoburping.